C ++ Primer 5th Edition,练习1.23无输出

时间:2018-10-25 03:02:37

标签: c++

我正在用C ++入门教程自学C ++,并且在练习1.23时被绊了两天。这是问题所在:

  

锻炼第1.5.2节

     

练习1.23:编写一个程序,读取多个事务并计算每个ISBN发生多少事务。

     

练习1.24:通过进行多次交易来测试先前的程序   代表多个ISBN。每个ISBN的记录都应分组在一起。

我应该使用名为“ Sales_item”的类来提供此功能,该类需要输入ISBN,项目数和销售价格(例如<ISBN> 4 24.99)。它还启用以下操作:

我尝试使用以下代码进行第一次练习:

#include <iostream>
#include "Sales_item.h"

int main()
{
  int cnt = 0;
  Sales_item item1, item2, item3, item4;
  //Verify we have data from the infile
  if (std::cin >> item1) {
    cnt = 1;
    //read the rest of the transactions and add to cnt for each
    while (std::cin >> item2 >> item3 >> item4) {
      cnt++;
    }
  }
  else {
    std::cout << item1.isbn() << " has a total of " << cnt <<
    " transactions." << std::endl;
  }
  return 0;
}

我的想法是,每次将事务传递到标准输入时,while循环都应该增加cnt变量,然后在到达列表末尾时输出反映事务数量的语句,但是我什么也没得到用于输出。我的推理/逻辑在这应该如何工作上是错误的?

1 个答案:

答案 0 :(得分:0)

cin之类的iostream的operator>>返回流本身,这就是链接它们的方式。因此,while循环内的测试始终为非零值,因此永远不会退出。