您的位置:首页 > 编程语言 > C语言/C++

C++ 文件操作

2014-06-11 18:49 309 查看
fstream:

ifstream

ofstream

fstream

1、打开

因为构造函数会调用想用的open函数,所以打开某个文件的两种方法:

方法1:

ifstream infile;

infile.open("in");

方法2:

ifstream infile("in");

open()函数原型:

void open (const char * filename, openmode mode);

这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合:

in :打开文件做读操作

out: 打开文件做写操作

ate:打开文件后立即将文件定位到文件尾

app: 在每次写之前找到文件尾

trunc:打开文件时,清空已经存在的文件流

binary:以二进制模式进行二进制操作

有用的组合有:

out 打开文件做写操作,删除文件中已有的数据

out|app 打开文件做写操作,在文件尾写入

out|trunc 与out模式相同

in 打开文件做读操作

in|out 打开文件做读、写操作,并定位于文件开头处

in|out|trunc 打开文件做读写操作,删除文件中已有的数据

上述所有打开组合都可以添加ate模式,对这些模式添加ate只会改变文件打开时的初始定位,在每次读写之前,将文件定位于文件尾

对于ofstream打开的文件,要保存文件中已有的数据,唯一方法是显示的指定app模式打开

如果不指定mode,则会调用默认构造函数,三者不同:

ofstream ios::out | ios::trunc

ifstream ios::in

fstream ios::in | ios::out //文件同时以in和out打开时,不清空

2、检验打开是否成功(这是一个好的编程习惯)

接下来要检验打开是否成功:

if(infile) //返回true,说明打开成功,false,说明打开失败

3、流的状态

流的状态由bad、fail、eof、good操作揭示。

如果bad、fail、eof中任意一个为ture,则检查流本身将显示该流处于错误状态;相反,如果这三个条件没有一个为ture,则good操作将返回true(所有都返回bool型返回值):

bad()

如果在读写过程中出错,返回 true 。例如:当我们要对一个不是打开为写状态的文件进行写入时,或者我们要写入的设备没有剩余空间的时候。

fail()

除了与bad() 同样的情况下会返回 true 以外,加上格式错误时也返回true ,例如当想要读入一个整数,而获得了一个字母的时候。

eof()

如果读文件到达文件末尾,返回true。

good()

这是最通用的:如果调用以上任何一个函数返回true 的话,此函数返回 false 。

要想重置以上成员函数所检查的状态标志,你可以使用成员函数clear(),没有参数。

【注】:

1、将文件流与新文件重新绑定前,要先关闭现在的文件:

…………

infiile.close();

infile.open("2.txt");

…………

2、关闭流并不能改变流对象的内部状态。如果最后的读写操作失败了,对象的状态将保持为错误模式,直到执行clear操作重新恢复流的状态为止



in_file可以打开新的文件,但并不会影响流的状态,流的状态需要用clear()函数恢复
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: