cin的异常如何恢复?(在线等)

dongzhilin 2004-06-30 04:17:37
以下程序是想测试:当输入流要求int型数据,而输入字符型数据时如何通过异常检验错误并恢复。现在的问题是,我已经能捕获异常,但无法将cin恢复到正常状态。程序执行结果在代码后。
那个高手指点一下。

#include <iostream>
using namespace std;

int getint()
{
int i;

cin >> i;
cout << "i=" << i << endl;
return i;
}

int main()
{
int j;
cin.exceptions(ios_base::failbit);
for( int i = 0; i < 3; ++i )
{
try
{
j = getint();
break;
}
catch(ios_base::failure& exe)
{
cout << "catch exception\n";
cin.clear(ios_base::goodbit);
}
}
cout << j;
}
/*
input:
a
output:
catch exception
catch exception
catch exception
4194304
*/
...全文
84 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongzhilin 2004-06-30
  • 打赏
  • 举报
回复
已解决
使用cin.sync()恢复cin状态

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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