【问题标题】:Stuck in loop while trying to get input from cin尝试从 cin 获取输入时陷入循环
【发布时间】:2013-10-02 00:06:41
【问题描述】:

好的,我对 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");
}

【问题讨论】:

    标签: c++ iostream


    【解决方案1】:

    一旦您的流进入故障模式,它将一直处于故障模式,直到您 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();
    

    【讨论】:

    • 谢谢。这行得通。不幸的是,我不得不寻找每一行,因为我还没有理解其中的大部分内容。
    猜你喜欢
    • 2017-05-03
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2020-10-20
    相关资源
    最近更新 更多