C++文件读取为什么最后一个会显示两次,详细求解。源代码如下。

#include<iostream>#include<fstream>usingnamespacestd;intmain(){ifstreamin;in.open("12... #include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in;
in.open("123.txt");
char c;
while(!in.eof())
{
in>>c;
cout<<c;
}
in.close();
return 0;
}
展开
 我来答
wanfustudio
推荐于2018-04-05 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3758万
展开全部
问题出在while(!in.eof()),
eof判断文件末尾是靠in>>读取文件移动文件指针来进行的
假设文件中有abc这3个字符,当前读出了c,按正常理解文件已经到达末尾,但是eof判断不出来,所以再次执行了循环,但本次读取是失败的,ch中仍保存着上次读出的字符c,进行输出,再次判断eof,这次它判断出是文件末尾,退出循环
改法
在in>>ch;
后加
if(!in.eof())
break;
就是说,读完再判一遍
枚锐aK
2018-12-31
知道答主
回答量:1
采纳率:0%
帮助的人:791
展开全部
这个的正解应该是:在你用完字符串后,对字符串制空。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨下天子
2012-04-19 · TA获得超过112个赞
知道答主
回答量:101
采纳率:0%
帮助的人:63.7万
展开全部
楼上正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式