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