C++提供的I/O流类库含有两个平行基类:streambuf 和 ios,所有的流类都是由它们派生出来的。
ios类包含四个直接派生类:输入流类istream,输出流类ostream,文件流类fstreambase,串流类strstreambase。
I/O流类库最主要的头文件iostream,它支持cin,cout,cerr,clog。
iomanip头文件 包含带参数 的流操作算子的有关信息;
fstream头文件包含对文件I/O操作的有关信息;
strstream包含对内存格式化I/O操作的有关信息;
stdiostream包含对混合C和 C++风格的I/O操作。
-
I/O流类列表 类名 说明 所在头文件 ios 流基类 iostream istream 标准输入流 iostream ifstream 输入文件流类 fstream istream_withassign cin的输入流类 iostream istrstream 输入字符串流类 strstrea ostream ofstream ostrstream cout、cerr、clog ostrstream 输出字符串流类 strstrea iostream fstream strstream strstrea stdiostream stdiostr streambuf 抽象流缓冲区基类 iostream filebuf 磁盘文件缓冲区流类 fstream strstreambuf 字符串流缓冲区类 strstrea stdiobuf 标准I/O缓冲区类 stdiostr
cerr用于给用户生成警告或错误信息,一经生成立即输出,属于非缓冲输出。 - clog用于生成程序的执行情况信息,属于缓冲输出,对应标准错误输出设备(显示屏),处理出错信息,要等缓冲区刷新时才输出一次。
- I/O分为无格式和有格式两种,无格式I/O以字节为操作单位,有格式I/O以数据类型为操作单位。(处理大容量文件最好用无格式I/O)
cout的定义:ostream cout(stdout);//将stdout作为一个输出流,输出流的名字任意。
运算符<<的重载:
ostream& operator<<(ostream& dest, char* pSource);
ostream& operator<<(ostream& dest, int source);
.`````
上述运算符重载为什么返回ostream流对象的引用??
括号里是两个操作数,从变量到cout。
cin的定义:istream cin(stdin);
运算符>>的重载:
istream & operator>>(istream& sour, char* pDes);
这里是从cin到变量。