C++Primer读书笔记(第八章)

第八章标准IO库

8.1 面向对象的标准库

         IO对象不允许做复制或赋值操作,形参和返回类型也不能为流类型,如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用(引用必须是非const)。

8.2 条件状态

         IO标准库管理一系列条件状态成员,用来标记给定IO对象是否处于可用状态,或者碰到哪种特定的错误。每个IO类定义了三个iostate类型的常量值:badbit(标志着系统级故障,如无法恢复的读写错误)、failbit(可恢复的错误)和eofbit(遇到文件结束符)。有4个操作可以显示流状态:bad()、 fail()、eof()和good()。有clear()和setstate(flag)操作可用于改变条件成员的状态。

8.3 输出缓冲区的管理

         每个IO对象管理一个缓冲区,用于存储程序读写的数据。缓冲区的内容被刷新,即写入到真是的输出设备或文件。一般使用操纵符:flush(刷新且不输出任何多余字符)、ends(刷新+空字符)和endl(刷新+换行)。若要刷新所有输出,可以使用unitbuf操纵符:

         cout<< unitbuf <<”first” << “second” << nounitbuf;

         如果程序崩溃了,则刽刷新缓冲区,所以在调试程序时候,一定要注意显示调用刷新缓冲区。

         tie()函数可以将输入流和输出流绑定一起:cin.tie(&cout);保证每次cin前都会自动刷新输出缓冲区。

8.4 文件的输入和输出

         fstream头文件定义了三种支持文件IO的类型:ifstream(读文件)、ofstream(写文件)和fstream(读写同一个文件)。还定义了两个自己的新操作:open(打开文件)和close(关闭文件)。

         C++中文件名是用C风格字符串而不是string类型。通常比较好的方法是,用string类型保存文件名,调用时候用c_str成员获取C风格字符串。

         打开文件后,通常要检验打开是否成功,这是一个好习惯。

         文件模式有:in、out、binary(二进制模式操作)、app(每次写之前找到文件末尾)、ate(打开文件后立即将文件定位在文件尾)和trunc(打开文件时清空已存在的文件流)。

8.5 字符串流

         istringstream、ostringstream和stringstream。

你可能感兴趣的:(C/C++)