我的第一个 cin 被忽略了,它只接受第二个

My first cin is ignored, it only accepts the second one

好吧,我在这里得到了一个简单的代码: (如果 cin 不是变量,则输入 0-100 之间的数字然后清除 cin,忽略错误行)

void Numbrs(int v1)
{
do
{
    cout << "Please enter a number between 0 and 100" << endl;
    cin >> v1;
    if (!(cin >> v1))
    {
        cout << "Invalid input, please try again." << endl;
        cin.clear();
        cin.ignore (numeric_limits<streamsize>::max(), '\n');
    }
    else
    {
        if (v1 < 0 || v1 > 100)
        {
            cout << "Invalid number, please try again." << endl;
        }
        else
        {

        }
    }
} while (v1 < 0 || v1 > 100);
}

(当然它现在什么也没做,因为我快疯了它不起作用) 我的问题是当我输入任何数字时它总是忽略第一个数字,这是一个例子:

Please enter a number between 0 and 100
111
315
Invalid number, please try again.
Please enter a number between 0 and 100
50
40

谁能解释为什么会这样?几乎每次我尝试使用 cin.clear()cin.ignore (numeric_limits<streamsize>::max(), '\n').

时都会发生这种情况

注意你是在重复输入操作:

cin >> v1; // Try removing this line
if (!(cin >> v1)) {
   ...
}