fig08_03.cpp

来自「经典vc教程的例子程序」· C++ 代码 · 共 55 行

CPP
55
字号
// Fig. 8.3: fig08_03.cpp
// Overloading the stream-insertion and 
// stream-extraction operators.
#include <iostream.h>
#include <iomanip.h>

class PhoneNumber {
   friend ostream &operator<<( ostream&, const PhoneNumber & );
   friend istream &operator>>( istream&, PhoneNumber & );

private:
   char areaCode[ 4 ];  // 3-digit area code and null
   char exchange[ 4 ];  // 3-digit exchange and null
   char line[ 5 ];      // 4-digit line and null
};

// Overloaded stream-insertion operator (cannot be 
// a member function if we would like to invoke it with
// cout << somePhoneNumber;).
ostream &operator<<( ostream &output, const PhoneNumber &num )
{
   output << "(" << num.areaCode << ") "
          << num.exchange << "-" << num.line;
   return output;     // enables cout << a << b << c;
}

istream &operator>>( istream &input, PhoneNumber &num )
{
   input.ignore();                     // skip (
   input >> setw( 4 ) >> num.areaCode; // input area code
   input.ignore( 2 );                  // skip ) and space
   input >> setw( 4 ) >> num.exchange; // input exchange
   input.ignore();                     // skip dash (-)
   input >> setw( 5 ) >> num.line;     // input line
   return input;      // enables cin >> a >> b >> c;
}

int main()
{
   PhoneNumber phone; // create object phone

   cout << "Enter phone number in the form (123) 456-7890:\n";

   // cin >> phone invokes operator>> function by 
   // issuing the call operator>>( cin, phone ).
   cin >> phone;

   // cout << phone invokes operator<< function by
   // issuing the call operator<<( cout, phone ). 
   cout << "The phone number entered was: " << phone << endl;
   return 0;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?