#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;
}