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