overloading stream insertion and stream extraction operators

#ifndef PHONENUMBER_H
#define PHONENUMBER_H

#include <iostream>
using std::ostream;
using std::istream;

#include <string>
using std::string;

class PhoneNumber
{
	public:
	friend ostream& operator<< (ostream&, const PhoneNumber& );
	friend istream& operator>> (istream&, PhoneNumber& );
	PhoneNumber(){};
	private:
		string areaCode;//地区码 315
		string exchange;//交换机码 560
		string line;//所在的线 83** 
		
};

#endif

/*
iomanip.h是I/O流控制头文件,就像C里面的格式化输出一样,
manip是manipulator(操纵器)的缩写(在c++上只有缩写才有效)。
-----------------------
setw(n) 设域宽为n个字符
如: cout<<setw(5)<<255<<endl;
结果是:(空格)(空格)255
*/

#include <iomanip>
using std::setw;

#include "PhoneNumber.h"
ostream &operator <<(ostream &output, const PhoneNumber &number )
{
	output << "(" << number.areaCode << number.exchange <<"-"<<number.line;
	return output; 
}
istream &operator >>(istream &input, PhoneNumber &number )
{
	input.ignore();//skip "("
	input >> setw(3) >> number.areaCode;
	input.ignore();//skip ")"
	input >> setw(3) >> number.exchange;
	input.ignore();//skip "-"
	input >> setw (4) >>number.line;
	return input;
}
<pre name="code" class="cpp">#include <iostream>
using std:: cout;
using std:: cin;
using std:: endl;
#include "PhoneNumber.h"
int main(int argc, char** argv) 
{
	PhoneNumber myphone;
	cout << "Enter the phone number in the form of (123)456-7890: " << endl;
	
	//cin 显式调用 >> 操作符。
	// 调用格式: operator>>(cin, myphone) 
	cin >> myphone;
	
	cout << "The phone No. entered was: " << endl;
	
	//cout 显式调用 << 操作符。
	// 调用格式: operator<<(cout, myphone)
	cout << myphone<<endl;
	
	return 0;
}


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值