马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在跳出循环后,39行的print函数不知道为什么多输出了一个数据,有大佬知道这是为什么吗qwq
这个是Sales_data结构体#pragma once
#include<string>
#include<iostream>
struct Sales_data{
Sales_data(const std::string &a):bookno(a){}
Sales_data(const std::string &a,unsigned b,double c):bookno(a),units_sold(b),revenue(c){}
Sales_data():bookno(),units_sold(0),revenue(0.0){}//不支持类内初始值,自己加的结构函数初始化列表
Sales_data(std::istream &a);
std::string isbn()const;
Sales_data& combine(const Sales_data &a);
std::string bookno;
unsigned units_sold;
double revenue;
};
std::string Sales_data::isbn()const{
return bookno;
}
Sales_data& Sales_data::combine(const Sales_data &a){
units_sold+=a.units_sold;
revenue+=a.revenue;
return *this;
}
Sales_data add(const Sales_data &item1,const Sales_data &item2){
Sales_data item3=item1;
item3.combine(item1);
return item3;
}
std::istream& read(std::istream &is,Sales_data &item){//这里返回的istream是引用,原因是流对象不允许复制,在传给函数作为参数是应该传入引用
is>>item.bookno>>item.units_sold>>item.revenue;
return is;
}
std::ostream& print(std::ostream &os,Sales_data &item){
os<<item.bookno<<" "<<item.units_sold<<" "<<item.revenue;
return os;
}
Sales_data::Sales_data(std::istream &is){
read(is,*this);
}
|