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

标签 c++ loops while-loop cin

我正在运行一个 while 循环,它将获取用户输入的 float 并将它们相加,直到输入中放入其他内容。

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++ 很陌生。谢谢!

最佳答案

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

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

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

关于C++ - 使用 cin 运行 while 循环后,程序将不再接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34911668/

相关文章:

c++ - C++ 中可更改的返回数据类型

c# - QT 文件与 Visual Studio

c++ - 在 C++ std::string 中解析(替换)

php - Mysqli 弄乱了我的 while 循环

php+mysqli while(false !== ($data = $mysqli_res->fetch_assoc)) 创建无限循环

java - 如何将switch语句中的条件返回到while?

c++ - 对象生命周期相关;以下问题是否存在术语/模式/不存在?

c - 如何在For循环中输入两个条件?

r - 将蒙特卡罗 p 值排列成不同样本大小和方差估计量的矩阵

vector - Clojure:使用索引为向量中的每个元素调用一个函数