2016-07-31 38 views
0

我在C++中創建了一個簡單的控制檯應用程序,其中包含一個將兩個整數作爲輸入的while循環。但是如果我輸入一個不是整數的字符,比如「a」,循環變得無限。我該如何阻止?如何讓C++忽略不正確的輸入?

我的代碼應該在炭值的輸入終止「|」但它需要整數作爲輸入,我不知道如何解決這個問題。

到目前爲止我的代碼(試圖結束於char值的輸入迴路 '|'):

int main() 
{ 

    int x = 0; 
    int y = 0; 
    char c = {x}; 
    char d = {y}; 

    while (c != '|') 
    { 
     cin >> x >> y; 
     // later I will do stuff with x and y 
    } 

    system("pause"); 
    return 0; 
} 
+1

的[檢查輸入值的整數可能的複製(HTTP ://stackoverflow.com/questions/18728754/checking-input-value-is-an-integer) – Default

+0

這個答案應該是有幫助的:https://stackoverflow.com/questions/26285232/validating-input – Galik

+0

另外這一個: https://stackoverflow.com/questions/33037415/validating-input-with -cin – Galik

回答

4

你可以簡單地在你的while循環補充一點:

if(cin.fail()) { 
    break; 
} 

檢查也this答案,它會幫助你很多。

您的代碼應該是這樣的:

int main() 
{ 

    int x = 0; 
    int y = 0; 
    char c = {x}; 
    char d = {y}; 

    while (c != '|') 
    { 
     cin >> x >> y; 
     if(cin.fail()) { 
      break; 
     } 
     // later I will do stuff with x and y 
    } 

    system("pause"); 
    return 0; 
} 

否則,如果你想不完全斷裂,同時循環再使用的 continue代替break