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