Файловые потоки ввода-вывода


5.1. Использование потоков ввода-вывода.

С помощью перегрузки операторов ввода и вывода можно заставить компилятор распознавать в операторах ввода-вы-вода один или несколько необходимых классов. Рассмотрим как создаются потоковые классы.

5.1.1. Перегрузка операторов вывода в поток

Обычно потоки вывода поддерживают только стандартные типы данных. С помощью перегрузки оператора вывода в поток << можно заставить выражения выводить объекты собст-венных классов.

// Программа 1

#include <iostream.h>

class TPoint {

private:

int x,y;

public:

TPoint() { x = y = 0;}

TPoint(int xx, int yy) { x = xx; y = yy; }

void PutX(int xx) { x = xx; }

void PutY(int yy) { y = yy; }

int GetX(void) { return x; }

int GetY(void) { return y; }

friend ostream& operator<< (ostream& os, TPoint &p);

};

void main()

{

TPoint p;

cout << p << endl;

p.PutX(100);

p.PutY(200);

cout << p << endl;

}

ostream& operator<< (ostream& os, TPoint &p)

{

os << " x== " << p.x << ", y == " << p.y ;

return os;

}

Поток вывода перегружен в виде дружественной функции. Так как функция возвращает ссылку на osteram то можно выво-дить несколько объектов в одном операторе вывода в поток.

cout << p1 << p2 << p3 << p4;

5.1.2. Перегрузка операторов ввода из потока

С помощью перегрузки оператора ввода из потока >> мож-но читать объекты класса.

friend istream& operator>> (istream& is, TPoint &p);

cin >> p;

cout << endl << "You entered: " << p;

}

istream& operator>> (istream& is, TPoint &p)

{

is >> p.x >> p.y ;

return is;

}

Загрузка...