這裏我試圖從用戶獲取一個整數,當輸入正確時循環。重新設置cin流狀態C++
輸入非整數值後(例如「dsdfgsdg」),cin.fail()返回true,如預期的那樣,while循環體開始執行。
這裏我重置cin的錯誤標誌,使用cin.clear();和cin.fail()按預期返回false。
但是,下次調用cin不起作用,並重新設置錯誤標誌。
任何想法?
#include<iostream>
using namespace std;
int main() {
int a;
cin >> a;
while (cin.fail()) {
cout << "Incorrect data. Enter new integer:\n";
cin.clear();
cin >> a;
}
}
您必須使用'cin.ignore(...)清除輸入流' – smac89