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

问题描述 投票:-2回答:1

好,所以我在这里得到了一个简单的代码:(如果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')时都会发生这种情况。

c++ cin ignore
1个回答
1
投票
注意,您正在重复输入操作:

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

© www.soinside.com 2019 - 2024. All rights reserved.