文件流读写问题汇总

      序:工作遇见文件流问题,查阅网上资料,这篇文章较好,保存以便后续查阅;

 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

   

你可能感兴趣的:(C/C++随记小知识)