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).