double arrow

Функции класса strstreambuf


Класс strstreambuf управляет символьным буфером, расположенным в динамической памяти. Области ввода и вывода для этого класса равны друг другу, но указатели текущей позиции чтения и записи позиционируются независимо. У этого класса имеются несколько конструкторов:

  • без параметров – в этом случае в памяти создается буфер неопределенного размера, увеличивающегося или уменьшающегося при необходимости, а выделение и освобождение памяти осуществляется внутри класса strstreambuf;
  • с одним целочисленным параметром - в этом случае в памяти создается буфер указанного начального размера, увеличивающегося или уменьшающегося при необходимости, а выделение и освобождение памяти осуществляется внутри класса strstreambuf;
  • с двумя параметрами типа char* и int – в этом случае в качестве буфера используется уже выделенная область памяти указанного размера;
  • с двумя указателями на функции, выполняющими динамическое выделение и удаление памяти для буфера, когда в этом возникает необходимость.

В классе strstreambuf содержится всего две функции:

  • freeze() – запрещает или разрешает автоматическое удаление и корректировку размера буфера, если тот создается внутри класса strstreambuf;
  • str() – возвращает указатель на строку, хранящуюся в буфере.

Пример:

#include <strstrea.h>

#define n 1024

main()

{ char c;

strstreambuf strbu(n);

strbu.sputc(‘A’);

c=strbu.sgetc(); cout<<c;

}

Результат:

А

Как уже было сказано, с указателями областей ввода и вывода в классе strstreambuf можно работать независимо друг от друга. Поэтому когда функция sputc() записывает в буфер символ ‘A’ и переводит указатель позиции записи на следующую позицию, указатель позиции чтения остается в исходной позиции, в результате чего функция sgetc() возвращает только что записанный символ.


Сейчас читают про: