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还是有区别的。

你可能感兴趣的:(C++文件流打开文件失败原因)