1.头文件iostream中定义了用于读写流的基本类型,fstream中定义了读写命名文件的类型,sstream定义了读写内存string对象的类型。
2.标准库使我们能忽略这些不同类型的流之间的差异,是通过继承机制来实现的。
3.IO对象无拷贝或赋值,由于不能拷贝IO对象,因此我们也不能将形参或返回类型设置为流类型。进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。
4.IO库条件状态:
strm::iostate strm是一种IO类型,iostate是一种机器相关的类型,提供了表达条件状态的完整功能。
strm::badbit strm::badbit用来指出流已崩溃。
strm::failbit strm::failbit用来指出一个IO操作失败了。
strm::eofbit strm::eofbit用来指出流到达了文件结束。
strm::goodbit strm::googbit用来指出流未处于错误状态。此值保证为零。
s.eof() 若流s的eofbit置位,则返回true。
s.fail() 若流s的failbit或badbit置位,则返回true。
s.bad() 若流s的badbit置位,则返回true。
s.good() 若流s处于有效状态,则返回true。
s.clear() 将流s中所有条件状态复位,将流的状态设置为有效。返回void。
s.clear(flags) 根据给定的flags标志位,将流s中对应条件状态复位。flags的类型为strm::iostate。返回void。
s.setstate(flags) 根据给定的flags标志位,将流s中对应条件状态位置位。flags的类型为strm::iostate。返回void。
s.rdstate() 返回流s的当前条件状态,返回值类型为strm::iostate。
5.一个流一旦发生错误,其上后续的IO操作都会失败。由于流可能处于错误状态,因此代码通常应该在使用一个流之前检查它是否处于良好状态。确定一个流对象的状态最简单的方法就是将它当做一个条件来使用(while(cin>>word))
6.badbit表示系统级错误,如不可恢复的读写错误。通常情况下,一旦badbit被置位,流就无法再使用了。在发生可恢复错误后,failbit被置位,如期望读取数值却读出一个字符等错误。这种问题通常是可以修正的,流还可以继续使用,如果到达文件结束位置,eofbit和failbit都会被置位。goodbit的值为0,表示流未发生错误。如果badbit、failbit和eofbit任一个被置位,则检测流状态的条件会失败。
C++ Prime 中文版第五版 第八章 IO库 笔记
最新推荐文章于 2022-10-24 21:56:21 发布