C++ 预定义了一些 I/O 流对象来实现输入输出,这些 I/O 流对象关联相应设备(键盘、显示器等)并实现程序和设备之间的数据传输。
C++ 预定义的 I/O 流对象有4个:cout 、cin 、cerr 和 clog,其中:
由于流对象的输入输出功能在 iostream 类库中实现,流对象则在名字空间 std 中定义,所以要使用上述输入输出方法需要包含 iostream 类库和加载名字空间 std 。相应的语句为:
#include // 包含I/O流库iostream
using namespace std; // 加载名字空间std
cin 和流提取运算符>>一起实现数据输入,cout、cerr 和 clog 和流插入运算符<<一起实现数据输出。
例如:
#include // 包含I/O流库iostream
using namespace std; // 加载名字空间std
int main(void)
{
int a,b;
cin >> a >> b; // 输入两个整数分别给 a 和 b
cout << a + b << " " << a - b; // 输出 a+b 和 a-b 的值,中间用空格隔开
return 0;
}
C++ 中通过流操纵算子来实现格式控制。流操纵算子在头文件 iomanip 中定义,因此要使用这些流操纵算子,必须包含该头文件。
#include // 包含流操作算子库
C++ 的 iomanip 库提供了多种流操纵算子,来实现不同的格式控制功能,包括
对于标准输出流 cout 可以使用 setbase 来设置输出整数的进制基数(只支持8、10、16进制),如:
cout << setbase(8) << n << endl; // 以八进制形式输出整数n
也可以直接使用流操纵算子 oct(八进制)、hex(十六进制)和 dec(十进制)直接控制输出整数的进制,如:
cout << hex << n << endl; // 以十六进制输出整数n
流操纵算子 setprecision 或函数 precision 都可以设置浮点数输出的精度,其参数为输出浮点数的有效数字个数(包括整数部分和小数部分,如12.34的有效数字个数为4)。
cout << setprecision(5) << 12.3 * 3.578 << endl;
或者:
cout.precision(5);
cout << 12.3 * 3.578 << endl;
以上输出结果均为:44.009
流操纵算子 setiosflags 可以辅助设置流输入输出格式,其参数是该流的格式标志值,setiosflags 提供了不同的参数来支持不同的输入输出格式需求。
double x = 1.23;
cout << setprecision(5) << x << endl;
cout << setiosflags(ios::showpoint) << setprecision(5) << x << endl;
输出结果为:
1.23
1.2300
对于域宽,函数 width 和 流操纵算子 setw 都可以实现对当前域宽(即输入输出的字符数)的设置。
cin >> n;
cout << setw(6) << n << endl; // 以域宽输出 n,如果 n 不足位,前面补空格
更多关于 iomanip 库的使用可点击关键字进入了解:setprecision 、iomanip 、setprecision、fixed、showpoint的用法总结 。