【发布时间】:2016-04-26 23:38:35
【问题描述】:
我正在运行一个 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 获取数据的文章:cplusplus.com/forum/articles/6046
-
看看
getline(..)。 -
用户输入的“其他东西”仍在输入缓冲区中等待。您必须在读取另一个号码之前将其删除,例如
paid。
标签: c++ loops while-loop cin