所以我在我的班级中有这个函数读取这三个变量,直到numSale等于10,否则直到输入“X”。目前,我可以运行它,但它不会退出。如果X被击中,有关如何使循环退出的任何建议吗?
void Read()
{
string id;
float price;
float amount;
cout << "Please enter your product id, unit price and amount of unit "
<< endl << "[id price amount] and enter X to finish:" << endl;
// DO_5: use a while loop to read in sales objects to saleRecord array
cin >> id >> price >> amount;
while(id != "X" || numSale < MAX_RECORDS)
{
Sale sales(id, price, amount);
saleRecord[numSale] = sales;
++numSale;
cin >> id >> price >> amount;
}
答案 0 :(得分:3)
改变这个:
while(id != "X" || numSale < MAX_RECORDS)
进入这个:
while(id != "X" && numSale < MAX_RECORDS)
while
循环一直运行,只要其中的表达式为true。
答案 1 :(得分:0)
最简单的方法是从检查流是否处于良好状态开始。您想在之后检查我们的输入:
while (numSale < MAX_RECORDS && std::cin >> id >> price >> amount && id != "X") {
// do something with the input
}
答案 2 :(得分:0)
你是如何测试出口的?可能是cin >> id >> price >> amount
阻止等待price
和amount
吗?
换句话说,如果用户只是输入
X <Enter>
你的程序仍会保留在cin行上,直到它找到另外两个可以解析为浮点数的输入。