麻烦大神们帮忙看下为什么不可以连续输入.

我是按照参考书上的代码写的

class Sales_item {
friend std::istream& operator>>(std::istream&, Sales_item&);
friend std::ostream& operator<<(std::ostream&, const Sales_item&);
private:
    std::string bookNo;      
    unsigned units_sold = 0; 
    double revenue = 0.0;
};

std::istream& 
operator>>(std::istream& in, Sales_item& s)
{
    double price;
    in >> s.bookNo >> s.units_sold >> price;
    // check that the inputs succeeded
    if (in)
        s.revenue = s.units_sold * price;
    else 
        s = Sales_item();  // input failed: reset object to default state
    return in;
}

std::ostream& 
operator<<(std::ostream& out, const Sales_item& s)
{
    out << s.isbn() << " " << s.units_sold << " "
        << s.revenue << " " << s.avg_price();
    return out;
}

然后下方是我自己的代码

struct Sales_data
{
	string name="No Name";
	double price=3 ;
	int sales_volume = 7;
	friend std::istream& operator>>(std::istream&,const Sales_data&);
	friend std::ostream& operator<<(std::ostream&, const Sales_data&);
};
std::istream& operator>>(std::istream& in, Sales_data& s)
{
	in >> s.name >> s.price >> s.sales_volume;
	return in;
}

std::ostream& operator<<(std::ostream& out, const Sales_data& s) 
{
	out << s.name << " " << s.price << " "<< s.sales_volume;
	return out;
}

但是提示没有与操作数匹配的“>>”和"<<"字符,price前面的字符出的提示,麻烦问下是哪里出问题了啊?

想实现的是按照顺序输入编号,价格和销量,之后可以调用进行运算等。

我看唯一的区别是上面用的std::string bookno,你用的string name

破案了,头文件不对………(被自己蠢哭)