c++中文件打开用了eof()后,为什么文件就再也打不开了啊??

我用fstream建立对象iofile,然后又循环while(!iofile.eof()),之后iofile就打不开了,是为什么啊??

eof()函数的设定是因为遇到文件尾了,EOF其实是-1值,当遇到文件末尾,则设置eof,并且返回eof()为true,然后对象不再读取文件,也就是输入流被截断
可以用fstream对象的clear来清除
你可以用iofile.clear();
来重新设置
温馨提示:内容为网友见解,仅供参考
无其他回答

c++中文件打开用了eof()后,为什么文件就再也打不开了啊??
eof()函数的设定是因为遇到文件尾了,EOF其实是-1值,当遇到文件末尾,则设置eof,并且返回eof()为true,然后对象不再读取文件,也就是输入流被截断 可以用fstream对象的clear来清除 你可以用iofile.clear();来重新设置

C++ 为什么while(! iofile.eof() )读取文件会出现死循环
eof() 函数要跟在读语句以后使用,用来判断前面的读语句是否读到文件结束符EOF了。EOF -- end of file.eof() 函数本身,并不到输入流里去取数,不去读取文件。单用 while(!iofile.eof()); 由于没有别的读语句去读文件,而自身又不会去读取文件,只是不断地判断 iofile的 EOF 标志位状态,...

c++eof()函数对文件及字符串的处理解析
在C\/C++编程中处理文件时,`eof()`函数的使用对于判断文件是否为空或是否到达文件结尾至关重要。然而,操作过程中可能会遇到问题,如无法准确判断文件状态,这可能导致程序运行结果不稳定。例如,多输出一个字符或陷入死循环。输出结果分析显示,`eof()`函数的返回值可能会误导程序员。该函数返回true时,...

C++ 为什么while(! iofile.eof() )读取文件会出现死循环
后面的读取操作就会瓦掉。可以改为 while(!iofile.eof()){ iofile>>stu_obj.tag>>stu_obj.num>>stu_obj.name>>stu_obj.score;stu_obj.disp();i++;iofile.seekp(i*sizeof(stu_obj),ios::beg);\/\/针对输出文件的操作 } 不过按习惯一般是直接 while(!iofile.eof()){ iofile>>stu_ob...

c++中关于eof()函数的一个问题
fin.clear(); \/\/重新打开文件前,先clear,再open 在open成功后不会对 fstream中状态进行操作,而open失败的话会设置_MyState为failbit,并且在close操作时如果本身是空文件,也会设置state为failbit,这样造成一次失败之后的其他很多操作都是失败的,因为很多fstream操作会先判断state;而clear函数是将...

c++,文件流,为啥文件能打开也会继续循环呢?
ifstream读到eof后本身也失效了,所以最后判断的!mytable还是true。可以考虑把while里的条件改为true,然后读取完毕后直接break。

C++文件读取问题!什么情况下会一直读入 -1 ,但是判断eof()却一直为0
不是你的文件有问题,问题肯定出在in.eof()的判断上,其实已经读到文件末尾了,所以peek()返回的是-1,但是eof没有返回应该返回的true。具体是什么原因,你要去查查eof()函数的使用方法。你跟踪一下eof()返回的值,你会发现返回了一个很大的整数,而不是0或者-1,所以导致一直循环。把 while(temp...

C++中eof()函数是判断文件内容是否为空还是判断文件能不能打开的?
eof()作用是判断流指针是不是指向文件尾。。。你可以打开文件后。用流eof()判断是否是文件尾来从而判断文件是否为空。。。

c++中,在while循环中到文件尾eof(),怎么就会输出空一行呢?
eof 就是文件结束 因为文件指针到最后一个字符时并不会触发eof,再读一次读不到数据才触发eof,这样c还保留着上一次的数据,又被输出一次,peek()方法是读取文件指针下一个位置的值,但并不移动文件指针,用在这里很合适 while (fin.peek()!=EOF)

C++问题 EOF
因为 a 和 b 都是整型 一直不能把 字符a 给读取掉, 所以a就一直在那里, 程序会一直卡在那,因为程序是从没被读掉的字符开始的,另外 你打上 EOF 是用于多组数据输入,处理多组数据时用得 会一直读到文件的结尾 或者输入 Ctrl+C时结束

相似回答
大家正在搜