Поделиться через


strstreambuf::strstreambuf

Создает объект типа strstreambuf.

explicit strstreambuf( 
   streamsize _Count = 0 
); 
strstreambuf( 
   void ( *_Allocfunc )( size_t ), 
   void ( *_Freefunc )( void * ) 
); 
strstreambuf( 
   char *_Getptr,  
   streamsize _Count, 
   char *_Putptr = 0 
); 
strstreambuf( 
   signed char *_Getptr,  
   streamsize _Count, 
   signed char *_Putptr = 0 
); 
strstreambuf( 
   unsigned char *_Getptr, 
   streamsize _Count, 
   unsigned char *_Putptr = 0 
); 
strstreambuf( 
   const char *_Getptr,  
   streamsize _Count 
); 
strstreambuf( 
   const signed char *_Getptr,  
   streamsize _Count 
); 
strstreambuf( 
   const unsigned char *_Getptr,  
   streamsize _Count 
);

Параметры

  • _Allocfunc
    Функция, используемая для выделения памяти буфера.

  • _Count
    Определяет длину буфера заданного в _Getptr. Если _Getptr нет аргументов (первой формы конструктора) будет предложено размер выделенной памяти для буферов.

  • _Freefunc
    Функция, используемая для высвобождения памяти буфера.

  • _Getptr
    Буфер, используемый для ввода.

  • _Putptr
    Буфер, используемый для вывода.

Заметки

Первый конструктор сохраняет указатель во всех указателей управление буфер ввода, буфер вывода, а strstreambuf выделение. Он задает сохраненного режима strstreambuf, чтобы сделать контролируемую последовательность изменяемые и extendable. Он также принимает _Count как предложено начальный размер выделения.

Второй конструктор запуску во-первых, за исключением того, что он хранит _Allocfunc в качестве указателя на функцию, которую необходимо вызвать, чтобы выделить хранилище и _Freefunc как указатель на функцию вызову освободить это хранилище.

3 Конструктора:

strstreambuf(char *_Getptr, streamsize count,
    char *putptr = 0);
strstreambuf(signed char *_Getptr, streamsize count,
    signed char *putptr = 0);
strstreambuf(unsigned char *_Getptr, streamsize count,
    unsigned char *putptr = 0);

также поступайте подобна первой, за исключением того, что _Getptr нужный объект массива, в котором содержатся контролируемая последовательность. (Следовательно, это не должно быть пустым указателем). Указывается, что количество элементов в массиве N следующим образом:

  • Если (_Count > 0), затем Ncount.

  • Если (_Count == 0), тогда Nstrlen( (const char *)_Getptr ).

  • Если (_Count < 0), затем NINT_MAX.

Если _Putptr указатель, функция задает только буфер ввода путем выполнения:

setg(_Getptr, _Getptr, _Getptr + N);

В противном случае она задает оба буфера входных и выходных данных путем выполнения:

setg(_Getptr, _Getptr, _Putptr);
setp(_Putptr, _Getptr + N);

В этом случае _Putptr должно находиться в интервале [_Getptr, _Getptr + N].

Наконец, 3 конструктора:

strstreambuf(const char *_Getptr, streamsize _Count);
strstreambuf(const signed char *_Getptr, streamsize _Count);
strstreambuf(const unsigned char *_Getptr, streamsize _Count);

все поведение аналогично:

streambuf( (char *)_Getptr, _Count );

за исключением того, что сохраненного режима делает контролируемую последовательность и изменяемые ни extendable.

Требования

Заголовок:<strstream>

Пространство имен: std

См. также

Ссылки

Класс strstreambuf

Программирование iostream

Соглашения iostreams