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

C++ - After running while loop with cin, the program won't take input again

我是 运行 一个 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++ 很陌生。谢谢!

当您使用 cin.clear() 时,它会重置错误标志。但是,流中的数据仍然存在。在尝试阅读 paid.

之前,您需要忽略该行的其余部分
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

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