Введение в язык Си++

Инициализация Потоков Вывода


ostream имеет конструкторы:

class ostream { // ... ostream(streambuf* s); // связывает с буфером потока ostream(int fd); // связывание для файла ostream(int size, char* p); // связывет с вектором };

Главная работа этих конструкторов - связывать с потоком буфер. streambuf - класс, управляющий буферами; он описывается в #8.6, как и класс filebuf, управляющий streambuf для файла. Класс filebuf является производным от класса streambuf.

Описание стандартных потоков вывода cout и cerr, которое находится в исходных кодах библиотеки потоков ввода/вывода, выглядит так:

// описать подходящее пространство буфера char cout_buf[BUFSIZE]

// сделать "filebuf" для управления этим пространством // связать его с UNIX'овским потоком вывода 1 (уже открытым) filebuf cout_file(1,cout_buf,BUFSIZE);

// сделать ostream, обеспечивая пользовательский интерфейс ostream cout(cout_file);

char cerr_buf[1];

// длина 0, то есть, небуферизованный // UNIX'овский поток вывода 2 (уже открытый) filebuf cerr_file()2,cerr_buf,0;

ostream cerr(cerr_file);

Примеры двух других конструкторов ostream можно найти в #8.3.3 и .



Содержание раздела