18.1 C++流的体系结构
C++为实现数据的输入输出定义了一系列的流类。
要利用c++流,必须在程序中包含有关的头文件,以便获得相关的流的声明。为了使用新标准的流,相关头文件的文件名中不得有扩展名。与C++流有关的头文件有:
iostream:使用cin、cout等预定流对象针对标准设备进行I/O操作。
fstream:使用文件流对象针对磁盘文件进行I/O操作。
strstream:使用字符串流对象针对内存字符串空间进行I/O操作。
iomanip:使用setw、fixed等操作符进行格式化控制。
18.2 预定义流对象
C++流有4个预定的流对象,它们的名称及与之联系的I/O设备如下:
cin 标准输入
cout 标准输出
cerr 标准出错信息输出
clog 带缓冲的标准出错信息输出
其中cin为istream类对象,其余三个为ostream类对象。
18.3 提取运算符>>和插入运算符<<
输入流类istream重载了运算符>>,用于数据输入,其原型为:
istream &operator>>(istream&,<类型>&);
重载的>>的功能是从输入流中提取数据赋值给一个变量,因此称之为提取运算符。当系统执行cin>>x操作时,将根据实参x的类型调用相应的提取运算符重载函数,把x的引用传送给对应的形参,接着从键盘的输入缓冲区中读取一个值并赋给x后,返回istream流,以便继续使用提取运算符为下一个变量输入数据。
输出流类ostream重载了运算符<<,用于数据输出,其原型为:
ostream&operator>>(ostream&,const<类型>&);
重载的<<的功能是把表达式的值插入到输出流中,因此称之为插入运算符。当系统执行cout<<x操作时,首先根据x的类型调用相应的插入运算符重载函数,把x的值传送给对应的形参,接着执行函数体,把x的值输出到显示屏幕上,在当前屏幕光标位置显示,然后返回ostream流,以便继续使用插入运算符输出下一个表达式的值。
18.4 有格式输入输出和无格式输入输出
利用C++流既可以进行有格式输入输出,也可以进行无格式输入输出。
有格式输入输出针对的是键盘、显示器、打印机等字符设备及其磁盘的文本文件。所以cin、cout等预定义流对象只能用于有格式输入输出。提取运算符>>和插入运算符<<也只能用于有格式输入输出。
无格式输入输出只针对磁盘文件,需调用流对象中专门的成员函数实现。
18.5 操作符
除了提供提取运算符>>和插入运算符<<,使得输入输出的表达简洁、形象、直观外,C++流还提供了能够与运算符>>和<<一起工作的预定义操作符,用来控制输入输出。有了操作符,C++流操作在风格上更加同一,输入输出操作也更加流畅。
其中stew用来设置输出宽度。C++流还提供了很多操作符,包含在头文件iomanip中。
参考《全国计算机等级考试二级教程——C++语言程序设计》