close
int a; cin >> a;
cout << cin.rdstate() << endl;
if(cin.rdstate()==ios::goodbit)
{
cout<<"輸入類型正確"<<endl;
}
if(cin.rdstate() == ios_base::failbit)
{
cout<<"输入数据类型错误,非致命错误,可清除输入缓冲区挽回!"<<endl;
}
当cin.rdstate()返回0(即ios::goodbit)时表示无错误,可以继续输入或者操作,若返回2则发生非致命错误即ios::failbit,则不能继续输入或操作
cin.clear(); //复为标志,将cin中的所有标志设置为有效状态
cin.sync(); //清空流
cin的标志变成0以后,如果不用cin.clear()进行改变其标志为1,在这个程序中会认为他一直是0,而不让我继续输入内容。加入了cin.clear()后,把cin.sysc()注释掉也没有效果,只有把这两句话都加上才有效果,
全站熱搜