C++文件流打开文件失败原因

     今天写一个文件分割与合并的程序,开始使用C语言的file操作fopen等函数写的,后来又用C++文件流写了一遍,发现了一些问题。

     在读子文件的时候,只能成功的打开第一个子文件进行读操作,第二个文件就打不开了,我找了半天,最终发现原因是因为我没有调用clear函数。因为我为读文件只申请了一个对象ifstream fRead,然后读完每一个子文件,就进行fRead.close(),之后再用fRead.open打开下一个文件进行读,事实上这样会失败,尽管close之后fRead的值已经变为0,而且用GetLastError得到错误代码是0。正确的做法是在fRead.close之后或之前调用fRead.clear。

     找出这个错误之后,我又重新用fopen等函数做了实验,即用同一个文件句柄进行读不同文件的操作,这样没有任何问题,调用close函数可以正常打开下个文件。

     总结一下,就是用同一个文件流对象对不同文件进行读操作时,读完毕之后不能只调用close,还要调用clear,文件流的close函数和C语言的close还是有区别的。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值