关于输入流cin的一个问题
我在vs2005下编译运行的#include "stdafx.h "
#include <string>
#include <iostream>
using namespace std;
int main()
{ int c;
try{
cin.exceptions(ios_base::failbit|ios_base::badbit);
cout < < "Please input integer ";
cin> > c;
}
catch(ios_base::failure)
{
if(cin.fail())
{ cout < < "Please reinput integer ";//流的状态
cout < < "cinstate " < <cin.rdstate() < <endl;
cin.clear(); //设置流为正确的状态 1
cout < < "cinstate " < <cin.rdstate()endl;//流的状态
cin> > c; //这行代码不能正确执行 2
}
}
cout < <c < <endl;
return 0;
}
我想测试catch语句快,当提示Please input integer时,如果输入一个字母,比如s,就会进入catch语句块,但是标示为2的语句不能正确执行。我的问题是,在语句1中,我已经设置了流为正确的状态,怎么2不能正常输入整数呢?
[解决办法]
cin.clear();
cin.sync();//加这一句