#include<iostream>
#include<string>
using namespace std;
void check_cin_state(istream& is)
{
if (is.bad())
cout << "cin ban()" << endl;
else
cout << "cin is not bad" << endl;
if (is.fail())
cout << "cin fail()" << endl;
else
cout << "not fail" << endl;
}
int main()
{
cout << "检查cin的状态" << endl;
cin.setstate(istream::badbit);
cin.setstate(istream::badbit | istream::failbit);
cin.clear(istream::badbit);
cin.clear():
check_cin_state(cin);
istream::iostate old_state = cin.rdstate();
cin.clear(old_state);
int sum = 0, value;
while (cin >> value, !cin.eof())
{
if (cin.bad())
throw std::runtime_error("IO IS BAD");
if (cin.fail())
{
cerr << "bad data " << endl;
cin.clear();
cin.ignore(200,'\n');
continue;
}
sum += value;
cout << "sun is" <<sum<< endl;
}
system("pause");
return 0;
}