Annex D (normative) Compatibility features [depr]

D.6 char* streams [depr.str.strstreams]

D.6.1 Class strstreambuf [depr.strstreambuf]

D.6.1.1 strstreambuf constructors [depr.strstreambuf.cons]

explicit strstreambuf(streamsize alsize_arg = 0);

Effects: Создает объект класса strstreambuf, инициализируя базовый класс с помощью streambuf(). Постусловия этой функции указаны в таблице 142.

Таблица 142 - strstreambuf(streamsize) эффекты
ЭлементЦенить
strmode dynamic
alsize alsize_­arg
palloc нулевой указатель
pfree нулевой указатель

strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));

Effects: Создает объект класса strstreambuf, инициализируя базовый класс с помощью streambuf(). Постусловия этой функции указаны в таблице 143.

Таблица 143 - strstreambuf(void* (*)(size_­t), void (*)(void*)) эффекты
ЭлементЦенить
strmode dynamic
alsize неуказанное значение
palloc palloc_­arg
pfree pfree_­arg

strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0); strstreambuf(signed char* gnext_arg, streamsize n, signed char* pbeg_arg = 0); strstreambuf(unsigned char* gnext_arg, streamsize n, unsigned char* pbeg_arg = 0);

Effects: Создает объект класса strstreambuf, инициализируя базовый класс с помощью streambuf(). Постусловия этой функции указаны в таблице 144.

Таблица 144 - strstreambuf(charT*, streamsize, charT*) эффекты
ЭлементЦенить
strmode 0
alsize неуказанное значение
palloc нулевой указатель
pfree нулевой указатель

gnext_­arg должен указывать на первый элемент объекта массива, количество элементов N которого определяется следующим образом:

  • Если n > 0, то N есть n.

  • Если n == 0, то N есть std​::​strlen(gnext_­arg).

  • Если n < 0, то N есть INT_­MAX.331

Если pbeg_­arg это нулевой указатель, функция выполняет:

setg(gnext_arg, gnext_arg, gnext_arg + N);

В противном случае функция выполняет:

setg(gnext_arg, gnext_arg, pbeg_arg);
setp(pbeg_arg,  pbeg_arg + N);

strstreambuf(const char* gnext_arg, streamsize n); strstreambuf(const signed char* gnext_arg, streamsize n); strstreambuf(const unsigned char* gnext_arg, streamsize n);

Effects: Ведет же , как strstreambuf((char*)gnext_­arg,n), за исключением того, что конструктор также устанавливает constant в strmode.

virtual ~strstreambuf();

Effects: Уничтожает объект класса strstreambuf. Функция освобождает динамически выделенный объект массива, только если (strmode & allocated) != 0 и (strmode & frozen) == 0. ([depr.strstreambuf.virtuals] описывает, как освобождается динамически выделенный объект массива.)

Сигнатура функции strlen(const char*) объявлена ​​в . Макрос определен в . <cstring>INT_­MAX<climits>