gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 16:06:10 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com