0

好的,我对 C++ 很陌生,我对 C# 很熟悉,但我真的不知道我的代码有什么问题。我只是想弄清楚如何检查用户的输入是整数还是字符串。

但是当我输入 '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

1 回答 1

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();
于 2013-10-02T00:14:12.503 回答