c++文件尾判断失败

inti=0;调试时发现程序在读文件的循环里无法跳出,也就是无法成功判断文件尾。这是怎么回事呢?求各位指教!while(!fp_account.eof())/{strin... int i=0;调试时发现程序在读文件的循环里无法跳出,也就是无法成功判断文件尾。这是怎么回事呢?求各位指教!

while(!fp_account.eof())/
{
string in;
getline(fp_account,in,'\n');
file[i].setBankName(in);

getline(fp_account,in,'\n');
file[i].setCardNum(in);

getline(fp_account,in,'\n');
file[i].setPassword(in);

getline(fp_account,in,'\n');
file[i].setIDNum(in);

getline(fp_account,in,'\n');
int blc=str2num(in);
file[i].setBalence(blc);

i++;
}
问题出现在文件的内容没有读到in里去。。。要哭了。。
展开
 我来答
White_MouseYBZ
2014-12-18 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6683万
展开全部
第一次进入while(!fp_account.eof())时,还没有读文件,所以eof()无效。接下来,最后那一次读语句后面跟的是int blc=str2num(in);和file[i].setBalence(blc);,显然代码是把刚才的“读”动作不当作越过文件结尾的;可是返回去就判断是不是文件结束了——这逻辑合适吗?正确的逻辑是:读——判断是否文件结束——文件结束了就跳出循环,否则处理刚才读到的数据——循环进入下一次“读”——
追问
我忘记说了,文件内的数据是按结构存放的,所以不存在循环内读取的时候是文件结束的可能。目前的问题是它出不去这个循环了。。
追答
那就更有问题了。循环体中文件不可能结束的话while(!fp_account.eof())中的eof()与哪条读文件语句配合检查文件是否结束呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式