好吧,我在这里得到一个简单的代码: (如果cin不是varable则输入0到100之间的数字然后清除cin,忽略错误行)
ul {
list-style-type: none;
margin-top: 05px;
padding: 0;
overflow: hidden;
background-color: #333;
text-align: center;
}
li {
float: left;
text-align:center;
}
li a {
display: block;
color: white;
text-align: center;
padding: 08px 16px;
text-decoration: none;
border:10px;
display:inline-block;
}
li a:hover:not(.active) {
background-color: #cccccc;
color:black;
}
.active {
background-color: #ffffff;
}
(当然现在没有做任何事,因为我疯了它不工作) 我的问题是,当我输入任何数字时,它总是忽略第一个,这是一个例子:
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()
时都会发生这种情况。
答案 0 :(得分:1)
请注意,您正在重复输入操作:
cin >> v1; // Try removing this line
if (!(cin >> v1)) {
...
}