C ++从某个键击中退出循环

时间:2013-11-18 20:50:36

标签: c++

所以我在我的班级中有这个函数读取这三个变量,直到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;
     }

3 个答案:

答案 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阻止等待priceamount吗?

换句话说,如果用户只是输入

X <Enter>

你的程序仍会保留在cin行上,直到它找到另外两个可以解析为浮点数的输入。