Мы с Вами работали со стандартными типами. Но чем хорош 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(); }
В результате наш класс будет вести себя как обычная стандартная переменная в потоке.