我是靠谱客的博主 灵巧蜡烛,最近开发中收集的这篇文章主要介绍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;
}


 


最后

以上就是灵巧蜡烛为你收集整理的overloading stream insertion and stream extraction operators的全部内容,希望文章能够帮你解决overloading stream insertion and stream extraction operators所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部