本文共 912 字,大约阅读时间需要 3 分钟。
C++中IO操作都可以用流对象来实现,一般有三种流对象:
1)控制台流对象: istream, ostream, iostream
2)文件流对象: fstream, ifstream, ofstream
3)字符串流对象: stringstream, istringstream, ostringstream
以上三种流类的读写都是以char 类型组成的流,对于wchar_t ,C++中定义了相应的宽字符流对象
流对象不支持复制操作,因此不能保存在vector 对象中
流对象的条件状态:由于记录读写过程中是否发生错误,其类型为iostate, 常用的有三种取值:
badbit: 系统发生不可修复错误
failbit: 此流错误可修复
eofbit: 达到文件末尾
流对象定义的几个成员函数用于获取或设置其条件状态:
s.bad(), s.fail(), s.eof(), 若以上三个函数返回值都为false, s.good()返回true, 此外
s.clear(): 将条件重设为有效状态
s.setstate(): 设置某个条件状态,以表示某个问题的发生
s.rdstate(): 返回一个 iostate 类型值,该值对应于流当前的整个条件状态
每个流对象管理一个输出缓冲区,执行输出操作时先将数据输出到输出缓冲区中,要刷新缓冲区才能将数据写入到真是的输出设备或文件,有以下几种方法可以刷新缓冲区:
1. 程序正常结束。作为 main 返回工作的一部分,将清空所有输出缓冲区。
2. 在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。
3. 用操纵符显式地刷新缓冲区,例如行结束符 endl。
4. 在每次输出操作执行完后,用 unitbuf 操作符设置流的内部状态,从而清空缓冲区。
5. 可将输出流与输入流关联(tie)起来。在这种情况下,在读输入流时将刷新其关联的输出缓冲区(常用在交互式系统下,确保给用户的提示在读取用户的输入之前都已输出)。
转:http://blog.csdn.net/lily854212198/article/details/10826553