void imbue(const locale&);
Remarks: Позволяет производному классу получать информацию об изменениях в локали в момент их возникновения. Между вызовами этой функции класс, производный от streambuf, может безопасно кэшировать результаты вызовов функций локали и членов полученных таким образом фасетов.
basic_streambuf* setbuf(char_type* s, streamsize n);
Effects: Влияет на буферизацию потока способом, который определяется отдельно для каждого класса, производного от basic_streambuf этого пункта ([stringbuf.virtuals], [filebuf.virtuals]).
pos_type seekoff(off_type off, ios_base::seekdir way,
ios_base::openmode which
= ios_base::in | ios_base::out);
Effects: Изменяет позиции потока в одной или нескольких управляемых последовательностях способом, который определяется отдельно для каждого класса, производного от basic_streambuf этого пункта ([stringbuf.virtuals], [filebuf.virtuals]).
pos_type seekpos(pos_type sp,
ios_base::openmode which
= ios_base::in | ios_base::out);
Effects: Изменяет позиции потока в одной или нескольких управляемых последовательностях способом, который определяется отдельно для каждого класса, производного от basic_streambuf этого пункта ([stringbuf], [filebuf]).
int sync();
Effects: Синхронизирует контролируемые последовательности с массивами. То есть, если не pbase() равно нулю, символы между pbase() и pptr() записываются в управляемую последовательность. Затем указатели могут быть при необходимости сброшены.
Returns: -1 при неудаче. Что составляет отказ, определяется каждым производным классом ([filebuf.virtuals]).
streamsize showmanyc();300
Returns: Оценка количества символов, доступных в последовательности, или -1. Если он возвращает положительное значение, то последовательные вызовы underflow() не будут возвращаться traits::eof() до тех пор, пока из потока не будет извлечено хотя бы это количество символов. Если showmanyc() возвращается -1, вызовы underflow() или uflow() завершатся ошибкой.301
streamsize xsgetn(char_type* s, streamsize n);
Effects: Присваивает доn символов последовательным элементам массива, первый элемент которого обозначенs. Назначенные символы считываются из входной последовательности, как если бы при повторных вызовах sbumpc(). Назначение прекращается, когда либоn были назначены символы, либоsbumpc() возвращался вызов traits::eof().
int_type underflow();
Remarks: Открытые члены basic_streambuf вызывают эту виртуальную функцию только в том случае, если она gptr() равна нулю или gptr() >= egptr()
Returns: traits::to_int_type(c), гдеc является первым character из pending sequence, без перемещения позиции входной последовательности за ним. Если ожидающая последовательность пуста, функция возвращается, traits::eof() чтобы указать на сбой.
Это result character первый символ ожидающей последовательности, если он не пуст, в противном случае - следующий символ, который будет считан из входной последовательности.
Это backup sequence пустая последовательность, если онаeback() равна нулю, в противном случае символы в [eback(), gptr()).
Effects: Функция устанавливает gptr() и так egptr() , что если ожидающая последовательность непуста, то не egptr() является нулевой, а символы в[gptr(), egptr()) являются символами в ожидающей последовательности, в противном случае либоgptr() имеет значение null, либо gptr() == egptr().
Если eback() и не gptr() равны нулю, функция не ограничена в отношении их содержимого, но «обычное условие резервного копирования» состоит в том, что либо
резервная последовательность содержит как минимум gptr() - eback() символы, и в этом случае символы [eback(), gptr()) соответствуют последним gptr() - eback() символам резервной последовательности, или
символы[gptr() - n, gptr()) соответствуют резервной последовательности (гдеn - длина резервной последовательности).
int_type uflow();
Requires: Ограничения те же, что и для underflow(), за исключением того, что символ результата должен быть перенесен из ожидающей последовательности в резервную последовательность, а ожидающая последовательность не должна быть пустой перед передачей.
Default behavior: Звонки underflow(). Если underflow() возвращается traits::eof(), возвращается traits::eof(). В противном случае возвращает значение traits::to_int_type(*gptr()) и увеличивает значение следующего указателя для входной последовательности.
Морфемы словаshowmanyc «es-how-many-see», а не «show-manic».
underflow или uflow может потерпеть неудачу из-за преждевременного создания исключения. Намерение состоит не только в том, чтобы звонки не возвращались, eof() но и в том, чтобы они вернулись «немедленно».
Классы, производные от, basic_streambuf могут предоставить более эффективные способы реализации xsgetn() и xsputn() переопределения этих определений из базового класса.
int_type pbackfail(int_type c = traits::eof());
Remarks: Общедоступные функции basic_streambuf вызывают эту виртуальную функцию только тогда, когда возвращается значение gptr() null gptr() == eback(), или . Другие вызовы также должны удовлетворять этому ограничению.traits::eq(traits::to_char_type(c), gptr()[-1])false
pending sequence Определяется как для underflow(), с изменениями , которые
Если traits::eq_int_type(c, traits::eof()) возвращается true, то входная последовательность копируется на один символ до того, как будет определена ожидающая последовательность.
Если traits::eq_int_type(c, traits::eof()) возвращаетсяfalse, тоc добавляется. Не указано, выполняется ли резервная копия входной последовательности или изменяется каким-либо иным образом.
Postconditions: В свою очередь, ограничения gptr(), eback()и pptr() такие же , как для underflow().
Returns: traits::eof() для обозначения отказа. Сбой может произойти из-за невозможности резервного копирования входной последовательности или из-за того, что по какой-либо другой причине указатели не могут быть установлены в соответствии с ограничениями. pbackfail() вызывается только тогда, когда возвращение действительно не удалось.
streamsize xsputn(const char_type* s, streamsize n);
Effects: Записывает доn символов в выходную последовательность, как если бы при повторных вызовах sputc(c). Записанные символы получаются из последовательных элементов массива, первый элемент которого обозначен знакомs. Запись останавливается, когда либоn символы были написаны, либоsputc(c) возвращался вызов traits::eof(). Не указано, вызывает ли функция,overflow() когдаpptr() == epptr() становится,true или она достигает тех же результатов другими способами.
int_type overflow(int_type c = traits::eof());
Effects: Использует некоторую начальную подпоследовательность символов pending sequence. Ожидающая последовательность определяется как конкатенация
пустая последовательность, еслиpbase() не равна нулю, в противном случае pptr() - pbase() символы, начинающиеся с pbase(), за которыми следует
пустая последовательность, если traits::eq_int_type(c, traits::eof()) возвращается true, в противном случае последовательность, состоящая изc.
Remarks: Функции-члены sputc() и sputn() вызывают эту функцию в случае, если в буфере размещения нет места, достаточного для размещения последовательности символов аргумента.
Requires: Каждое преобладающее определение этой виртуальной функции должно подчиняться следующим ограничениям:
1.Указывается влияние употребления символа на связанную выходную последовательность.303
2.Позвольте r быть количеством символов в ожидающей последовательности, которые не используются. Если неr равно нулю , то pbase() и pptr() должен быть установлен таким образом, чтобы: pptr() - pbase() == r аr символы , начинающиеся на pbase() это соответствующий выходной поток. В случае, если онr равен нулю (все символы ожидающей последовательности были израсходованы), то либо pbase() устанавливается nullptr, либо pbase() и pptr() оба установлены на одно и то же ненулевое значение.
3.Функция может завершиться ошибкой, если не удается добавить какой-либо символ в связанный выходной поток или если он не может быть установлен pbase() и в pptr() соответствии с вышеуказанными правилами.
То есть для каждого класса, производного от экземпляра basic_streambuf в этом разделе ([stringbuf], [filebuf]), дается спецификация того, как потребление символа влияет на связанную выходную последовательность. Нет требований к программному классу.
Обычно overflow возвращается,c чтобы указать на успех, за исключением тех случаев, когда traits::eq_int_type(c, traits::eof()) возвращается true, и в этом случае он возвращается traits::not_eof(c).