Cin在递归函数中

时间:2012-06-10 06:15:55

标签: 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();
}

1 个答案:

答案 0 :(得分:2)

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

其次,使用sync:

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