读书人

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

发布时间: 2013-08-01 15:23:18 作者: rapoo

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;

读书人网 >C++

热点推荐