64,649
社区成员
发帖
与我相关
我的任务
分享
void main()
{
int a, b;
while (cin>>a>>b, !cin.eof())
{
if (cin.fail())
{
cerr<<"bad data, try again";
cin.clear();
cin.clear(istream::failbit);
continue;
}
if (cin.bad())
{
throw runtime_error("IO stream corrupted");
}
cout<<"a = "<<a<<" b = "<<b<<endl;
}
}
// 如果输入一个非法的字符,譬如“adfssdfdsf”,将进入一个死循环
// 如何打破这个循环?
// 要求:1、不是通过把continue,改为break;因为那样会突破while
// 2、能够重新开始cin>>a>>b语句
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin>>a>>b,!cin.eof())
{
if (cin.fail())
{
cerr<<"bad data, try again";
cin.clear();
cin.sync(); //清空流
continue;
}
if (cin.bad())
{
throw runtime_error("IO stream corrupted");
}
cout<<"a = "<<a<<" b = "<<b<<endl;
}
system("pause");
return 0;