C++ 文件操作

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()函数恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值