搞不明白的读文件问题,涉及到eof成员函数,很棘手哦!
...
int main()
{
ifstream fin;
char next; // ******
fin.open( "File.txt ");
if (fin.fail())
{
cout < < "Input file opening failed.\n ";
exit(1);
}
fin> > next;
while (!fin.eof())
{
cout < <next < < " ";
fin> > next;
}
fin.close();
return 0;
}
文件File.txt中的内容是1 2 3 4
程序输出为:1 2 3 4
但是如果// ******处改为 int next;其他地方都不变,输出则是:1 2 3
我在while循环里置个计数器,发现next是char类型时,循环里面的语句执行了4次,而当next为int类型时,循环里面的语句只执行了3次,为何是int型时就少执行了一次呢?我想造成这种结果的缘由应该是eof()的工作原理。
望达人详细讲解下其中的原因,感谢万分!
[解决办法]
因为char,在读最后一个数据时仍然不会置eof,要在试图读最后一个的下一个时才置eof
int,则在读最后一个数据时就会顺便置eof。
如果想更深入了解C++流,就去找《标准C++输入输出流与本地化》
搞不明白的读文件有关问题,涉及到eof成员函数,很棘手哦
搞不明白的读文件问题,涉及到eof成员函数,很棘手哦!...intmain(){ifstreamfincharnext//******fin.open(
