首先根据书上内容输入程序
#include<iostream>
#include "Sales_item.h"
using namespace std;
int main()
{
//第一章最后练习
Sales_item total;
if (cin >> total) {
Sales_item trans;
while (cin >> trans) {
if (total.isbn == trans.isbn)
total += trans;
else {
cout << total << endl;
total = trans;
}
}
cout << total << endl;
}
else {
//警告无输入
cerr << "No data?!" << endl;
return -1;
}
return 0;
}
运行结果如下
输入了2种书的ISBN编号,结果却只输出了第一个编号求和后的结果。
分析原因,应当与本书1.4.4练习类似,没有EOF导致程序判断输入仍未结束。通过Ctrl+D表示EOF,再次运行
结果正确,练习完成
PS:需要按照格式输入三次Ctrl+D才显示正确结果。
我的理解是:只有Sales_item类的三个成员都通过Ctrl+D表示输入已经结束才算输入真正结束了。
参考文献
[1]:C++ Primer 第五版