六一的部落格


关关难过关关过,前路漫漫亦灿灿。



file stream

定义了读写命名文件的基本类型

处理命名文件IO


头文件

1#include <fstream>

文件流

-
只读 ifstream 继承自istream
只写 ofstream 继承自ostream
可读写 fstream 继承自iostream

创建文件流


默认初始化文件,之后打开

1fstream fstrm;            // 创建一个未绑定的文件流
2
3fstrm.open(s);            // 打开名为s的文件, 将文件与fstrm绑定. 返回void
4fstrm.close();            // 关闭与fstrm绑定的文件. 返回void
5
6fstrm.is_open();          // 返回bool值,判断文件是否成功打开且未关闭

给出文件名,创建对象的同时尝试打开文件

创建一个fstream,打开名为s的文件

s为string对象,支持一次转换(C风格字符串)

显式构造函数,不支持隐式转换,即不支持字符串转fstream对象

1fstream fstrm(s);        

文件模式

file mode


ifstream

-
in 只读

默认in


ofstream

-
out 只写
trunc 清空内容, 从头开始写入
app 以追加方式写入

默认out + trunc


fstream

-
in 可读
out 可写, 默认trunc
trunc 清空内容, 从头开始写入; 要求指定out
app 隐式指定out, 以追加方式写入; 要求未指定trunc append

默认in + out


以指定模式打开文件

1fstream fstrm(s, mode); // 按指定mode打开
 1ofstream out("file1");
 2ofstream out2("file1", ofstream::out);    
 3ofstream out3("file1", ofstream::out | ofstream::trunc);
 4
 5// 以上均打开文件,清空内容
 6
 7ofstream app("file2", ofstream::app);
 8ofstream app2("file2", ofstream::out | ofstream::app);
 9
10// 以上均打开文件,在文件末尾追加

打开文件操作

打开文件失败,failbit置位

已经打开的文件无法再次打开

打开成功,执行good操作返回true

如果以默认方式打开ofstream,文件内容被丢弃

1open(str);
 1ifstream in(ifile);
 2ofstream out;
 3
 4out.open(ifile + ".copy");
 5// out.open(ifile + ".copy", ofstream::app);
 6
 7// 写时,没有该文件则创建
 8if (out.fail())
 9    cout << "open fail" << endl;
10
11in.close();
12in.open(ifile + "2");
13
14// 读时,没有该文件不会创建,报错
15if (in.fail())
16    cout << "open fail2" << endl;

关闭文件操作

fstream对象被销毁时,自动对其调用close

1fs.close();

文件流


file stream

定义了读写命名文件的基本类型

处理命名文件IO


头文件

1#include <fstream>

文件流

-
只读 ifstream 继承自istream
只写 ofstream 继承自ostream
可读写 fstream 继承自iostream

创建文件流


默认初始化文件,之后打开

1fstream fstrm;            // 创建一个未绑定的文件流
2
3fstrm.open(s);            // 打开名为s的文件, 将文件与fstrm绑定. 返回void
4fstrm.close();            // 关闭与fstrm绑定的文件. 返回void
5
6fstrm.is_open();          // 返回bool值,判断文件是否成功打开且未关闭

给出文件名,创建对象的同时尝试打开文件

创建一个fstream,打开名为s的文件

s为string对象,支持一次转换(C风格字符串)

显式构造函数,不支持隐式转换,即不支持字符串转fstream对象

1fstream fstrm(s);        

文件模式

file mode


ifstream

-
in 只读

默认in


ofstream

-
out 只写
trunc 清空内容, 从头开始写入
app 以追加方式写入

默认out + trunc


fstream

-
in 可读
out 可写, 默认trunc
trunc 清空内容, 从头开始写入; 要求指定out
app 隐式指定out, 以追加方式写入; 要求未指定trunc append

默认in + out


以指定模式打开文件

1fstream fstrm(s, mode); // 按指定mode打开
 1ofstream out("file1");
 2ofstream out2("file1", ofstream::out);    
 3ofstream out3("file1", ofstream::out | ofstream::trunc);
 4
 5// 以上均打开文件,清空内容
 6
 7ofstream app("file2", ofstream::app);
 8ofstream app2("file2", ofstream::out | ofstream::app);
 9
10// 以上均打开文件,在文件末尾追加

打开文件操作

打开文件失败,failbit置位

已经打开的文件无法再次打开

打开成功,执行good操作返回true

如果以默认方式打开ofstream,文件内容被丢弃

1open(str);
 1ifstream in(ifile);
 2ofstream out;
 3
 4out.open(ifile + ".copy");
 5// out.open(ifile + ".copy", ofstream::app);
 6
 7// 写时,没有该文件则创建
 8if (out.fail())
 9    cout << "open fail" << endl;
10
11in.close();
12in.open(ifile + "2");
13
14// 读时,没有该文件不会创建,报错
15if (in.fail())
16    cout << "open fail2" << endl;

关闭文件操作

fstream对象被销毁时,自动对其调用close

1fs.close();