C++学习笔记之I/O流

时间:2023-02-15 00:07:17

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到变量。