无法获取哨兵值以读取多个 CIN 输入?

Can't get sentinel value to read multiple cin inputs?

本文关键字:CIN 输入 读取 获取 哨兵      更新时间:2023-10-16

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

2017年3 12

4223

161 10.0 0 2吨

99 5.00 10 3 吨

0

581

12345.00 10 3

921 5.25 0 1 N

8314.99 25 2

0

4223 和 581 是收据编号;161、99、123 等是项目 ID;item 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;
}

您需要 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);
}