很多时候会使用如下模式写代码,直接使用cin,会出现两种问题:
1、 当我们输入英文字母’b’时,它的状态标识改为fail,这个状态标识没有清除,进入死循环。
2、输入ctrl+c等信号,cin将不会等待输入,进入死循环。
#include <iostream>
using namespace std;
int main()
{
while(1)
{
cout << "test" << endl;
int a;
cin >> a;
if(cin.fail())
{
cout<<"输入有错!请重新输入"<<endl;
}
else
{
cout<<a;
break;
}
}
return 0;
}
所以使用cin之前可加以下两个函数,避免出现莫名其妙的问题。
cin.clear(); //更改状态标识符
cin.sync(); //清空缓存区的数据流