c++ - 递归函数中的cin

标签 c++ iostream

为什么这个东西一直在循环? .. 我尝试清除 cin 流,但如果我输入数字以外的内容,它仍然会循环。

void AskQuestion()
{
    DisplayQuestion();
    bool Exit = false;
    int input = 0;
    cout<<"Input : ";
    if(!(cin>>input))
    {
        cout<<"Invalid Input"<<endl;
        cin.ignore(10000,'\n');
        cin.clear();
    }
    else
    {
        Exit = ProcessInput(input);
    }
    if(!Exit) AskQuestion();
}

最佳答案

首先,不要使用递归:将其设为while

其次,使用同步:

int number;
while (true) {
    if (cin >> number)
        break;
    cout << "Invalid number.\n";
    cin.sync();
    cin.clear();
}
cout << "Number: " << number;

关于c++ - 递归函数中的cin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966734/

相关文章:

c++ - 作为可变参数模板参数的函数

java - 如何在 Java 中重新分区文件中的每一行

c++ - 在 C++ 中,如果没有换行符,则不会打印字符串

c++ - 直接写入顶点缓冲区

c++ - 从另一个线程最大化/最小化窗口

c++ - 在 C++ 中打印变量名的通用方法

c++ - 奇怪的行为

c++ - 如何从 std::basic_ios 为 OS X 上的 clang 获取文件描述符?

C++从流中提取 double

具有原始类型的 C++ const 修饰符