由cin给类对象赋值怎么写

DreamMakers 2011-08-31 04:48:41
主函数中有语句
sales_item book;
cin>>book;
cout<<book<<endl;

sales_item是一个类,含有属性ISBN(序列号),num_copy(卖出的数目)和average(卖出时的均价)

怎样编写sales_item可以满足输入:
1-2-222-3 10 12.99
输出
1-2-222-3 10 12.99

我不太懂,book对象还能一次性由cin赋值吗?
...全文
508 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ken_scott 2011-09-01
  • 打赏
  • 举报
回复

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::istream;
using std::ostream;

class SaleItem
{
public:
SaleItem() : m_iSaleCount(0), m_dSaleAvgPrice(0) {

}

SaleItem(int iSaleCount, double dSaleAvgPrice, const string & strIndex)
: m_iSaleCount(iSaleCount), m_dSaleAvgPrice(dSaleAvgPrice), m_strIndex(strIndex) {

}

friend istream & operator >> (istream & is, SaleItem & saleItem);
friend ostream & operator << (ostream & os, const SaleItem & saleItem);

private:
int m_iSaleCount;
double m_dSaleAvgPrice;
string m_strIndex;
};

istream & operator >> (istream & is, SaleItem & saleItem) {
return (is >> saleItem.m_strIndex >> saleItem.m_iSaleCount >> saleItem.m_dSaleAvgPrice);
}

ostream & operator << (ostream & os, const SaleItem & saleItem) {
return (os << saleItem.m_strIndex << ' ' << saleItem.m_iSaleCount << ' ' << saleItem.m_dSaleAvgPrice);
}

int main()
{
SaleItem book;
cin >> book;
cout << book;
return 0;
}
shenyan008 2011-09-01
  • 打赏
  • 举报
回复
需要重载流操作符,但不能是成员操作符,因为左操作符是流,而不是该类对象。
所以需要把该重载函数声明为该类的Friend。
LZS535261548 2011-08-31
  • 打赏
  • 举报
回复
重载流操作符号
dark_cool 2011-08-31
  • 打赏
  • 举报
回复
恩运算符重载可以解决
未注销 2011-08-31
  • 打赏
  • 举报
回复
重载。
liutengfeigo 2011-08-31
  • 打赏
  • 举报
回复
推荐 C++ primer plus
苍蝇①号 2011-08-31
  • 打赏
  • 举报
回复
重载操作符》
taodm 2011-08-31
  • 打赏
  • 举报
回复
楼主还是要买本教材补补基础吧。
pathuang68 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 andamajing 的回复:]
主函数中有语句
sales_item book;
cin>>book;
cout<<book<<endl;

sales_item是一个类,含有属性ISBN(序列号),num_copy(卖出的数目)和average(卖出时的均价)

怎样编写sales_item可以满足输入:
1-2-222-3 10 12.99
输出
1-2-222-3 10 12.99

我不太懂,bo……
[/Quote]

重载 >> 操作符即可。

可参考:
运算符重载小结
chenyu964877814er 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 weixiaoshashou 的回复:]
在你的类里面重载流操作符
[/Quote]
正解...通过定义一个友元函数...重载>>操作符....这样也能保证类的封装性完好...最好封装起来,不然就没有c++的感觉了....
十八道胡同 2011-08-31
  • 打赏
  • 举报
回复
需要sales_item 里面重载>> 和<<操作符
weixiaoshashou 2011-08-31
  • 打赏
  • 举报
回复
哦写错了

friend istream &operator >> (istream&,sales_item &);


weixiaoshashou 2011-08-31
  • 打赏
  • 举报
回复
如 friend ostream &operator >> (istream&,sales_item &);
weixiaoshashou 2011-08-31
  • 打赏
  • 举报
回复
在你的类里面重载流操作符

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧