0

为什么这个东西一直循环?.. 我尝试清除 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();
}
4

1 回答 1

2

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

其次,使用同步:

int number;
while (true) {
    if (cin >> number)
        break;
    cout << "Invalid number.\n";
    cin.sync();
    cin.clear();
}
cout << "Number: " << number;
于 2012-06-10T06:28:40.323 回答