Мы с Вами работали со стандартными типами. Но чем хорош C++, что он позволяет сделать из пользовательского класса практически стандартный тип путем перегрузки операторов сложения, вычитания и так далее. Тоже самое относится и к потокам. Давайте посмотрим пример.
#include "stdafx.h"
#include "iostream.h"
#include "strstrea.h"
class Date
{
int mo, da, yr;
public:
Date( int m, int d, int y )
{
mo = m; da = d; yr = y;
}
friend ostream& operator<< ( ostream& os, Date& dt );
};
ostream& operator<< ( ostream& os, Date& dt )
{
return os << dt.mo << '/' << dt.da << '/' << dt.yr;
}
void main()
{
Date dt( 5, 6, 92 );
strstream buf;
buf << dt;
cout << buf.rdbuf();
}
В результате наш класс будет вести себя как обычная стандартная переменная в потоке.