2013-10-02 64 views
0

好吧我對C++非常陌生,我對C#進行了嘗試,並且我並不真正瞭解代碼中的錯誤。我只是想弄清楚如何檢查用戶的輸入是整數還是字符串。在試圖從cin獲取輸入時陷入循環

但是當我鍵入'a'或其他字符串時,while循環永遠不會結束。

#include <iostream> 

using namespace std; 

int main() 
{ 
    int number; 
    goto skip; 
    do 
    { 
     cout << "Wrong input. Try again."; 
skip: 
     cout << "Number: "; 
     cin >> number; 
    } 
    while (!cin); 
    cout << "Correct input."; 
    system("PAUSE"); 
} 

回答

4

一旦流已進入故障模式,將處於故障模式,直到你clear()其狀態位。然而,僅僅清除這些位將不會有幫助,因爲違規角色會留在流中。最有可能你想在重試之前忽略整條線:

while (!(std::cout << "Number: " && std::cin >> number)) { 
    std::cout << "Wrong input. Try again.\n"; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 
std::cout << "Correct input.\n"; 
std::cin.ignore(); 
+0

謝謝。這工作。不幸的是,我不得不尋找每條線,因爲我沒有理解它的大部分。 – user1046403