C++问题:ifstream流一直找不到文件结束符 while循环一直没有跳出

#include<stdlib.h>#include<fstream>#include<iostream>intmain(){vector<int>files;ifstr... #include <stdlib.h>

#include <fstream>

#include <iostream>

int main()

{
vector<int> files;

ifstream infile("messi.txt");
if(!infile)
{
cerr<<"cannot open the file:"
<<"ronaldo.txt"<<endl;
}
int tofile;
while(infile>>tofile,!infile.eof())//以行读入 getline(infile,tofile)//流
{ //状
if(infile.bad()) //态 //8.9和8.10
throw runtime_error("IO stream ocorrupt"); //的
if(infile.fail()) //查
{ //询
cerr<<"bad data,try again.."<<endl; //和
infile.clear(); // //控
//infile.ignore(numeric_limits<streamsize>::max(),'\n'); //制
continue;
}
if(!infile.fail())
{
files.push_back(tofile);
}
}
vector<int>::iterator ster=files.begin();
for(;ster!=files.end();ster++)
{
cout<<*ster<<endl;
}
infile.close();
infile.clear();
system("pause ");
return 0;
}
messi.txt文件内容如下:
data milan london 43 12 liverpool chelsea 32 enter
lionel 32 enter
12 980 enter
执行结果一直是输出bad data,try again..并且停不下来了 求高手解答。。。
展开
 我来答
cqdjyy01234
2013-04-13 · TA获得超过1147个赞
知道小有建树答主
回答量:267
采纳率:50%
帮助的人:305万
展开全部
当读到d(第一个字符)时,读取失败,输出bad data,try again.,然后你清除了错误标记,但是文件流指针并没有移动,因此读到的始终是d这个字符。你应该加个cin.get()之类的。
追问
具体怎么做呢??求QQ详聊。。。
追答
//infile.ignore(numeric_limits::max(),'\n');

改为

infile.get();应该就可以了,相当于跳过当前字符。
忘川漱石
2013-04-13 · TA获得超过131个赞
知道答主
回答量:137
采纳率:0%
帮助的人:110万
展开全部
int tofile;

infile>>tofile

但是你的txt的开头是“data...”,字符串你当int读入,当然出错了。
追问
这个我知道。。但是程序为什么找不到文件结束符?一直输出bad data,try again..并且停不下来了?
追答
orz,可能是卡在那里了。
你试试用char[]读入不就好了么,调试调试不就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式