469826336 发表于 2018-11-21 21:18:27

跳出循环后多输出了一组数据

在跳出循环后,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);
        }

TOP_LK 发表于 2018-11-21 22:27:41

有没有可能是第35行打印的呢?

469826336 发表于 2018-11-25 20:33:16

TOP_LK 发表于 2018-11-21 22:27
有没有可能是第35行打印的呢?

逐语句看出来不是
页: [1]
查看完整版本: 跳出循环后多输出了一组数据