istream的ignore使用

tobealv 2012-03-27 02:19:38
int _tmain(int argc, _TCHAR* argv[])
{
int val;

ifstream ifile("1.dat");

while (ifile >> val, !ifile.eof())
{
if (ifile.bad())
throw runtime_error("IO System Error.");

if (ifile.fail())
{
cerr << "bad val, try again";
ifile.clear(ifstream::failbit);
ifile.ignore(20, ' ');

continue;
}

cout << val;
}
return 0;
}


文件1.dat的内容很简单:
1 s 2

为什么执行的时候还是死循环,ifile.ignore没起作用?
...全文
344 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenhong609 2012-03-27
  • 打赏
  • 举报
回复
将ifile.clear(ifstream::failbit);改为ifile.clear();前者在VC和GCC下的支持不是很好!!!
mosal 2012-03-27
  • 打赏
  • 举报
回复
哦了[Quote=引用 8 楼 dyzhen 的回复:]

找到原因了,

ifile.clear(ifstream::failbit);
改为
ifile.clear()
就可以了。

也许VC没有正确实现clear(istream::failtbit)
[/Quote]
tobealv 2012-03-27
  • 打赏
  • 举报
回复
找到原因了,

ifile.clear(ifstream::failbit);
改为
ifile.clear()
就可以了。

也许VC没有正确实现clear(istream::failtbit)
tobealv 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mosal 的回复:]

我咋没问题C/C++ code
int main()
{

int val;

ifstream ifile("1.dat");

while (ifile >> val, !ifile.eof())
{
if (ifile.bad())
throw runtime_error("IO System Error.");
……
[/Quote]

您用的什么编译器?
mosal 2012-03-27
  • 打赏
  • 举报
回复
我咋没问题
int main()
{

int val;

ifstream ifile("1.dat");

while (ifile >> val, !ifile.eof())
{
if (ifile.bad())
throw runtime_error("IO System Error.");

if (ifile.fail())
{
ifile.clear();
ifile.ignore(20, ' ');
continue;
}

cout << val << " ";
}
return 0;
}
tobealv 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pengzhixi 的回复:]

先说说你要干什么吧
[/Quote]

有个1.dat文件,里面的内容是:
1 s 2

我想通过上面的程序把数值读取出来..也就是说忽略调's'
pengzhixi 2012-03-27
  • 打赏
  • 举报
回复
while (ifile >> val)
pengzhixi 2012-03-27
  • 打赏
  • 举报
回复
先说说你要干什么吧
tobealv 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mosal 的回复:]

sync
[/Quote]

??
mosal 2012-03-27
  • 打赏
  • 举报
回复
sync

65,186

社区成员

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

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