如何安排具有sentinal值的多个cin?

时间:2018-03-12 03:36:12

标签: 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 && itemid && regprice && percentoff && numpurchased && taxstatus != '0')
  {
    //    cin >> itemid >> regprice >> percentoff >> numpurchased >> taxstatus;
    cout<< itemid << endl;
  }


 return 0;
}

1 个答案:

答案 0 :(得分:3)

您使用的逻辑运算符错误。您必须将它们中的每一个单独比较为0,并在比较结果上使用&&运算符。

while(thing1 != 0 && thing2 != 0)

&&运算符唯一的作用是获取两个bool值,如果两个操作数都为true,则返回true。它无法做到将变量与多个值进行比较或将多个值与同一变量进行比较等事情。

此外,recipenum等变量代表数字,而不是字符。因此,您应该将它们与0进行比较,而不是'0',它代表字符0,而不是数字值。