无法获得哨兵价值以阅读多个cin输入?

时间:2018-03-12 12:47:07

标签: c++

此程序应从另一个文件中获取数据。此文件的数字如下:

2017 3 12

4223

161 10.0 0 2 T

99 5.00 10 3 T

0

581

123 45.00 10 3 T

921 5.25 0 1 N

83 14.99 25 2 T

0

4223和581是收据; 161,99,123等是项目ID;在项目ID之后还有其他四个输入,我稍后会尝试处理; 0是哨兵。

我尝试使用while循环来读取数据,如果它不是哨兵,至少要处理和输出项目ID。但它不起作用。

#include <iostream>
using namespace std;

int main()
{
  double operation;
  int year; 
  int month;
  int day; 
  int receiptnum
  int itemid;
  double regprice; 
  int percentoff;  
  int numpurchased;
  char taxstatus; 

  cin >> year >> month >> day;
  cout << "Date of purchases: "  << month << "/" << day << "/" << year     << endl

  cin >> receiptnum >> itemid >> regprice >> percentoff >> numpurchased >> taxstatus;
  while(receiptnum !=0 && itemid !=0 && regprice !=0 && percentoff !=0 && numpurchased !=0 && taxstatus !=0)
  {

    cout<< itemid << endl;
  }


 return 0;
}

1 个答案:

答案 0 :(得分:0)

您需要2个循环:一个读取到文件末尾,另一个读取单个项目:

while (cin >> receiptnum) {
    // Read all item lines
    do {
        itemid = 0;
        if (cin >> itemid && itemid) {
            if (cin >> regprice >> percentoff >> numpurchased >> taxstatus) {
                // Do something with the data
            }
        }
    } while (itemid);
}