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