C ++ - 使用cin运行while循环后,程序将不再重新输入

时间:2016-01-20 22:13:54

标签: c++ loops while-loop clear cin

我正在运行一个while循环,它将使用用户输入的浮点数并将它们添加到一起,直到输入中放入其他内容。

while(cin >> input)
{
    price += input;
    cout << "Next price: ";
}

在此之后,我有用户输入他们付了多少钱:

cout << "Enter the amount paid: ";
cin >> paid;
cout << "You paid: " << paid << endl;

运行程序时,循环执行正常,我可以正确地将其定为cout总价格,但它会跳过cin >> paid;行并输出为You paid: nan。< / p>

我尝试在循环和下一个输入之间放置cin.clear(),但是在运行它时,输出为:You paid: 0

我是否需要更改while循环或使用其他版本来清除输入?我是C ++的新手。谢谢!

1 个答案:

答案 0 :(得分:5)

使用cin.clear()时,会重置错误标记。但是,流中的数据仍然存在。在尝试阅读paid之前,您需要忽略其余部分。

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

请务必添加#include <limits>以使用std::numeric_limits