C++清除錯誤輸入

#include <iostream>
using namespace std;

int main()
{
int a;
while(1)
{
cin>>a;
if(!cin) //條件可改寫爲cin.fail()
{
cout<<"輸入有錯!請重新輸入"<<endl;
cin.clear();
cin.sync(); //清空流
}
else
{
cout<<a;
break;
}
}
system("pause");
}

上面的cin默認參數爲0,即無錯誤,正常操作。當我們輸入英文字母'k'時,它的狀態標識改爲fail(即1),即錯誤,用cout對用戶輸出信息,再用cin.clear讓錯誤標識改回爲0,讓我們可以繼續輸入,再清空流數據繼續輸入.如果我們沒有了cin.clear,則會進入死循環,其過程爲我們輸入了英文字母,它的狀態標識便爲fail,當運行到條件判斷時,便總是回到錯誤的條件表示裏,並且我們再也沒辦法輸入,因爲錯誤的表示關閉了cin,所以會進入死循環.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章