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

问题描述 投票:0回答:1

我正在运行一个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

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

我需要更改while循环还是使用其他版本来清除输入?我对C ++很陌生。谢谢!

c++ loops while-loop cin
1个回答
5
投票

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

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

确保添加#include <limits>以使用std::numeric_limits

© www.soinside.com 2019 - 2024. All rights reserved.