搞不明白的读文件问题,涉及到eof成员函数,很棘手哦!

leeyoung212002 2007-05-08 03:24:45
...

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()的工作原理。

望达人详细讲解下其中的原因,感谢万分!
...全文
220 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gsfgsfgsf 2007-05-08
  • 打赏
  • 举报
回复
路過,頂一下
taodm 2007-05-08
  • 打赏
  • 举报
回复
因为char,在读最后一个数据时仍然不会置eof,要在试图读最后一个的下一个时才置eof
int,则在读最后一个数据时就会顺便置eof。
如果想更深入了解C++流,就去找《标准C++输入输出流与本地化》

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧