如何确保仅输入int而不输入char?

时间:2019-03-01 10:41:55

标签: c++ function loops char int

我写了一个仅在输入int时才能执行的函数。如果cin失败,它将再次执行do{...} while()直到输入int,而不是char。 我的问题是,一旦输入char,它就会陷入无限循环。我不知道为什么。

int syst ()
{
    int basisSys;
    bool opAga = false;
    do
    {
        cout << "Type the base you wanna calc. in" << endl;
        cin >> basisSys;
        if (cin.fail())
        {
            opAga = true;
        }
    }
    while (opAga == true);
    cout << endl << "You are calc. in " << basisSys << "system" << endl << endl;
    return basisSys;
}

1 个答案:

答案 0 :(得分:1)

忽略并清除该行很重要,因为operator>>格式错误,将不再从流中提取任何数据。

while(!(cin >> basisSys)){
   cout << "Bad value!";
   cin.clear();
   cin.ignore(numeric_limits<streamsize>::max(), '\n');
}