C++ iostream、iomanip 头文件详解
C++ iostream、iomanip 头文件详解
首先,我们来看看iostream。
相信大家都知道iostream,这个库可以说是最常用的几个库之一了。iostream库提供了输入输出流。比如cin、cout,都是在iostream里的。所以,我们经常会用到iostream这个库。
iostream这个名字很好理解,InputOutputStream,输入输出流。
我们先看看iostream的代码:
#include <bits/c++config.h>
#include <ostream>
#include <istream>
// 由于代码过长,不再继续
可以看出,iostream自己又引用了istream和ostream这两个头文件。这两个头文件的名字也很好理解,input stream和output stream。
我们再来分别看看istream和ostream里面又引用了什么:
istream:
#include <ios>
#include <ostream>
ostream:
#include <ios>
#include <bits/ostream_insert.h>
这两个头文件都引用了ios,我们继续看看ios的代码:
#include <iosfwd>
#include <exception>
#include <streambuf>
好了,就到这里吧!其实iostream还引用了很多头文件的,我们不必深究。只知道它引用了istream、ostream和ios就行了。
iostream库定义了以下三个标准流对象:
cin表示标准输入(standard input)的istream类对象。cin可以从设备读入数据。
cout表示标准输出(standard output)的ostream类对象。cout可以向设备输出或者写数据。
cerr表示标准错误(standard error)的ostream类对象。cerr是导出程序错误消息的地方,它只能允许向屏幕设备写数据。
其中,cin和cout是比较常用的。cerr相对比较少用。
这些标准的流对象都有默认的所对应的设备,见下表:
C++对象名 | 设备名称 | C中标准设备名 | 默认含义 |
---|---|---|---|
cin | 键盘 | stdin | 标准输入 |
cout | 显示器屏幕 | stdout | 标准输出 |
cerr | 显示器屏幕 | stderr | 标准错误输出 |
好了,对于iostream,我们就讲到这里。接下来我们将介绍iomanip。
iomanip提供了一些格式化输入输出流的函数。io代表输入输出,manip是manipulator(操纵器)的缩写。
iomanip中比较常用的函数有以下几个:
setw(int n); 预设输出宽度
setfill(Char c); 使用c作为填充字符
setbase(int n); 预设整数输出进制
setprecision(int n) 用于控制输出流浮点数的精度,整数n代表显示的浮点数数字的精度(使用四舍五入)。
讲了那么多,还是来个示例吧:
#include <iostream> // 标准输入输出流 #include <iomanip> // 格式控制 using namespace std; int main() { double n; cin >> n; // 假设输入:123.45 cout << n << endl; // 输出: 123.45 cout << setprecision(1) << n <<endl // 控制精度为1,四舍五入后输出 123.5 << setprecision(2) << n <<endl; // 控制精度为2,四舍五入后输出 123.45 cout << setfill('*') << setw(7) << n << endl; // 位宽为7,由于n只有6位,所以左边补充一个*,输出 *123.45 return 0; }