好,所以我在这里得到了一个简单的代码:(如果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)) {
...
}