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