2016-07-31 39 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