1、C++标准库介绍
1.1 C++是C的超集
- 一个典型的C程序(后缀名.c)可以完全被视为C++程序来编译(用g++编译)
- C程序可以通过__cplusplus符号是否预定义来判断当前是gcc还是g++编译,__cplusplus的值是long int类型的,值表示当前编译程序的C++编译器的版本号。
#include <stdio.h>
int main(void)
{
printf("%ld\n",__cplusplus);
return 0;
}
编译:g++ test.cpp
执行:./a.out
输出:199711
说明:说明当前使用的g++编译器的版本号是1997年11月的
- 一个典型的C++程序(后缀名.cpp)只能当C++程序来编译,可见C++是C的超集
- C++文件名的常用后缀:源文件(.cpp .cxx .cc .c .c++),头文件(.hpp .hxx .h),目前最常用的就是.cpp 和 .hpp
1.2 C++完全接收并兼容了C库
- 典型C++程序中可以支持C的形式,包含C库头文件,并直接使用C库API
- C++更建议的头文件包含形式不是<stdio.h>这样,而是< cstdio >这样,C++的标准库的头文件是没有后缀名的
- Ubuntu中gcc工具链的头文件在 /usr/include 中,可以实际看看
- 这是C库的头文件 /usr/include
- 这是C++库的头文件 /usr/include/c++
1.3 C++标准库介绍
- C标准库即为C++标准库的一部分,完全继承并以C++方式重写,位于std命名空间中
- C++面向对象库,如string 、iostream等,位于std命名空间中
- C++ STL标准模板库,如vector、map等,位于std命名空间中
1.4 C++标准库的地位和学习安排
- C++比C在实际工作中更依赖于库,所以学好C++标准库很重要
- C++标准库蕴含了C++的各种语言特性的典型用法,学标准库就顺便学好了C++
- 继承C标准库的部分兼容C的玩法,不用讲了
- C++面向对象库难度不大,本次先讲iostream和string等初步用法
- STL部分是重难点,在第3部分-STL等高阶话题中再讲
2、iostream的cout使用
2.1 基本使用
- cout即标准输出,对应stdout
- cout定义在std命名空间中,要按三种使用方法来用
- 结合 << 符号进行输出,可多节连接
- cout涉及的头文件有 < iostream > 、< iomanip >、 <bits/ios_base.h>。其中 < iostream >是最常用的普通输入输出库,< iomanip > 主要应用于格式化的输入输出,<bits/ios_base.h>属于< iomanip >。
- cout本质上是 ostream( iostream的派生类)的一个对象
- 流操作符 << 本质上是左移运算符在 iostream 中的运算符重载(即同样一个运算符,有多个作用)
2.2 流操作符的格式化细节
- C++ 通常使用 cout 输出数据,和 printf() 函数相比,cout 实现格式化输出数据的方式更加多样化。一方面,cout 作为 ostream 类的对象,该类中提供有一些成员方法,可实现对输出数据的格式化;另一方面,为了方面用户格式化输出数据,C++ 标准库专门提供了一个 < iomanip > 头文件,该头文件中包含有大量的格式控制符(严格意义上称为“流操纵算子”),使用更加方便。
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
double d = 12000.3456;
int i = 18;
cout << "hello world" << endl;
cout << i << endl;
cout << hex << i <<endl;
cout << i << endl;
cout << dec << i << endl;
cout << d << endl;
cout << setprecision(9) << d <<endl;
return 0;
}
输出:
hello world
18
12
12
18
12000.3
12000.3456
3、iostream的cin使用
3.1 基本使用
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
int val;
string s;
cout << "请输入一个数字: " << endl;
cin >> val;
cout << "输入的数字为: " << val << endl;
cout << "请输入一个字符串: " << endl;
cin >> s;
cout << "输入的字符串为: " << s << endl;
return 0;
}
输出:
请输入一个数字:
32
输入的数字为: 32
请输入一个字符串:
hello
输入的字符串为: hello
3.2 注意点
- 输入的时候不要使用引用符&,在C语言中scanf需要使用&,如 scanf("%d",&val);
- cin的输入会以空格为中断,如输入hello world,实际只截取了hello。
|