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

时间:2016-02-03 17:53:48

标签: c++ clear cin ignore

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

1 个答案:

答案 0 :(得分:1)

请注意,您正在重复输入操作:

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