2011-04-14 29 views
1

這可能看起來像一個奇怪的問題,但當cin請求時,如果它收到錯誤的類型它仍然會繼續,但cin的狀態更改。如何正確使用iostream cin?

我該如何循環,直到cin沒問題,例如,當我要求一個數字時,如果沒有給出額外的代碼,它就「接受」一個字符串,例如一個循環?

最後,當我連續多次使用cin時,它會按預期執行第一個cin,但隨後跳過其餘部分;我該如何解決?如果您需要更多信息,請在評論中提問。

// Example 
cout << "Enter a number: "; 
cin >> num; // A string is given 

cout << "Enter another number: "; 
cin >> num2; 

在上面的例子中,字符串會被接受,第二個cin很可能會因爲某種原因跳過。我前一陣子找到這個問題的答案,但我失去了我用這樣的循環的片段:/

+3

的一小段代碼,幾乎你想要做將是有益的什麼。 – 2011-04-14 21:52:33

回答

2

例如:

int value; 
while(!(cin >> value)) 
{ 
    cin.clear(); 
    cin.ignore(); // eat one character 
} 

while(!(cin >> value)) 
{ 
    cin.clear(); 
    cin.ignore(10000,'\n'); // eat the rest of the line 
} 
+0

+1,同時http://cplusplus.com/reference/iostream/ios/operatornot/ – Dacav 2011-10-13 11:52:10