Классы strstream, iststream и ostrstream

Назначение: поддерживают операции ввода-вывода, ввода и вывода ориентированные на использование специальных массивов соответственно
Заголовок: <strstream.h>
Иерархия:

Методы

str — Фиксирует динамический массив и возвращает на него указатель

Конструкторы

Копировать
#include <strstream.h>
strstream();
strstream(char *buf, int size, int mode);

istrstream(const char *buf);
istrstream(const char *buf, int size);

ostrstream();
ostrstream(char *buf, int size, int mode=ios::out);

Эти конструкторы используются для создания потоков, ориентированных на работу с массивами, которые поддерживают соответствующие функции ввода-вывода C++.

Для функции ostrstream() параметр buf представляет собой указатель на массив, собирающий символы, которые записаны в поток. Размер массива передается с помощью параметра size. По умолчанию поток открывается для нормального вывода, но, используя параметр mode, можно задать и другой режим. Допустимые значения параметра mode те же, что используются для одноименного параметра в функции open(). В большинстве случаев параметр mode можно оставлять равным значению, действующему по умолчанию. Если используется версия функции ostrstream() без параметров, происходит автоматическое выделение динамического массива.

Для версии функции istrstream(), принимающей один параметр, этот параметр buf является указателем на массив, который будет использован как источник символов при каждом выполнении операции ввода в поток. Содержимое массива, адресуемого параметром buf, должно иметь завершающий нулевой символ, который, однако, никогда не читается из массива.

Если для ввода нужна только часть строки, используйте форму конструктора istrstream() с двумя параметрами. В этом случае будут задействованы только первые size элементов массива, адресуемого параметром buf. Эта строка не обязана содержать завершающий нулевой символ, поскольку ее размер определяется значением параметра size.

Чтобы создать поток, ориентированный на работу с массивами и готовый ко вводу и выводу, используйте конструктор strstream(). В его параметризированной версии параметр buf указывает на строку, которая будет использована для операций ввода-вывода. Значение параметра size задает размер массива, а значение параметра mode определяет, как работает поток. Для нормальных операций ввода-вывода значение параметра mode будет равно ios::in | ios::out. Для операций ввода массив должен иметь завершающий нулевой символ.

При использовании версии конструктора strstream() без параметров буфер, предназначенный для ввода-вывода, выделяется динамически, а режим устанавливается в расчете на выполнение операций чтения/записи.