作者:马志峰
链接:https://zhuanlan.zhihu.com/p/24133740
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接: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 )
{
}
注意:
- 可以用流的状态作为条件,检查文件是否打开成功
- 必须先关闭已经关联的文件,才可以打开新的文件
文件模式
- 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模式打开文件时隐式截断
第三句和第四句是等价的
注意:
-
不能对输入流设置out模式,也不能对输出流设置in模式
-
可以对读写流设置in或out或in|out