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()注释掉也没有效果,只有把这两句话都加上才有效果,

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 minsin 的頭像
    minsin

    minsin的部落格

    minsin 發表在 痞客邦 留言(0) 人氣()