首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++primer第14章习题 错哪了啊多谢

2013-08-01 
c++primer第14章习题 哪里错了啊谢谢习题14.10.下述Sales_item输入操作符有什么错误?读入(a)0-201-99999-9

c++primer第14章习题 哪里错了啊谢谢
习题14.10.下述Sales_item输入操作符有什么错误?
读入(a)0-201-99999-9 10 24.95
    (b)10 24.95 0-201-99999-9


istream &operator>>(istream &in, Sales_item &s)
{
    double price;

    in >> s.isbn >> s.units_sold >> price;
    s.revenue >> s.units_sold *price;
    return in;
}

然后想写一段完整的代码测试测试。如下。好多错误啊。求指点谢谢啦
#include <iostream>

using namespace std;
class Sales_item
{
public:
    friend istream &operator>>(istream&, Sales_item&);
    friend ostream &operator<<(istream&, const Sales_item&);
private:
    string isbn;
    unsigned units_sold;
    double revenue;
};
ostream &operator<<(istream &out, const Sales_item &s)
{
    out << s.isbn << "\t" << s.units_sold << "\t"
    << s.revenue << "\t";
    return out;
}
istream &operator>>(istream &in, Sales_item &s)
{
    double price;

    in >> s.isbn >> s.units_sold >> price;
    s.revenue >> s.units_sold *price;
    return in;
}
int main()
{
    Sales_item s1;
    cin >> s1;
    cout << s1;

    return 0;
}
流输入操作符
[解决办法]

#include <iostream>
 
using namespace std;
class Sales_item
{
public:
    friend istream &operator>>(istream&, Sales_item&);


    friend ostream &operator<<(ostream&, const Sales_item&);
private:
    string isbn;
    unsigned units_sold;
    double revenue;
};
ostream &operator<<(ostream &out, const Sales_item &s)
{
    out << s.isbn << "\t" << s.units_sold << "\t"
    << s.revenue << "\t";
    return out;
}
istream &operator>>(istream &in, Sales_item &s)//throw(const char*)
{
    double price;
 
if(!in)throw "输入有误,请检查";

    in >> s.isbn >> s.units_sold >> price;
    s.revenue = s.units_sold *price;
    return in;
}
int main()
{
    Sales_item s1;
    cin >> s1;
    cout << s1;
 
    return 0;
}

//ostream &operator<<(istream &out, const Sales_item &s)
//这个定义和声明你笔误了,应该写成
//ostream &operator<<(ostream &out, const Sales_item &s)
//还有s.revenue >> s.units_sold *price;你也笔误了
//应该写成s.revenue = s.units_sold *price;

热点排行