《C++ Primer》读书笔记-第八章 02 文件IO

作者:马志峰
链接:https://zhuanlan.zhihu.com/p/24133740
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载

正文

  • ifstream, wifstream 从文件读
  • ofstream, wofstream 向文件写
  • fstream, wfstream 读写

除了继承自iostream类型的行为外
fstream中定义的类型增加了一些新的成员
管理与流关联的文件

继承

iostream::iostate read(iostream &, int);

第一个参数是iostream类型的引用
由于fstream是iostream的子类,也可以传递fstream类型的对象

read(cin, 100);  
read(strm, 100);

继承来的不止这些

新增

  • fstream fstrm; //fstream是某个具体的文件IO类
  • fstream fstrm(s); //指定s时,open函数被自动调用
  • fstream fstrm(s, mode);
  • fstrm.open(s);
  • fstrm.close();
  • fstrm.is_open();

open用于将fstream关联到文件,如果构造时传递不文件名,open被自动调用
close用于断开关联,析构时close被自动调用

ofstream out;  
out.open( sfile );  
if( out )  
{  
}

注意:

  1. 可以用流的状态作为条件,检查文件是否打开成功
  2. 必须先关闭已经关联的文件,才可以打开新的文件

文件模式

  • in 读
  • out 写
  • app 追加
  • ate 打开文件后立即定位到文件末尾
  • trunc 截断文件,仅在out下使用
  • binary 二进制

支持位运算,可以组合使用

默认情况下,即使不设置trunc,以out模式打开的文件也会被截断,文件原有的内容被清空

要避免这一行为,可以指定app模式(append)

ofstream out2(file, ofstream::out);  
ofstream out3(file, ofstream::out | ofstream::trunc);  

ofstream out4(file, ofstream::app);  
ofstream::out5(file, ofstream::out | ofstream::app);

第一句和第二句是等价的,以out模式打开文件时隐式截断
第三句和第四句是等价的

注意:

  1. 不能对输入流设置out模式,也不能对输出流设置in模式

  2. 可以对读写流设置in或out或in|out

猜你喜欢

转载自blog.csdn.net/qq_26751117/article/details/53442426