Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: overflow

From cppreference.net
protected :
virtual int_type overflow ( int_type ch = Traits :: eof ( ) ) ;

Записывает некоторые данные из области вывода в связанную символьную последовательность (в файл).

Ведёт себя так же, как версия базового класса std::basic_streambuf::overflow() , за исключением того, что поведение "потребления символов" определяется следующим образом:

1) Сначала использует std::codecvt::out установленной локали для преобразования символов во внешнее (возможно, многобайтовое) представление, сохраняя его во временном буфере, следующим образом: ( XSIZE — некоторый неопределенный размер буфера)
const std::codecvt<CharT, char, typename Traits::state_type>& a_codecvt =
    std::use_facet<std::codecvt<CharT, char, typename Traits::state_type>>(getloc());
typename Traits::state_type state;
CharT* end;
char xbuf[XSIZE];
char* xbuf_end;
std::codecvt_base::result r =
    a_codecvt.out(state, pbase(), pptr(), end, xbuf, xbuf + XSIZE, xbuf_end);
2) Затем записывает все полностью преобразованные символы из буфера в файл. Формально выполняет следующие шаги в зависимости от значения r :
r Операция
std:: codecvt_base :: ok Выводит символы из [ xbuf , xbuf_end ) в файл и завершается ошибкой при неудачной записи. В этот момент, если pbase ( ) ! = pptr ( ) и pbase ( ) == end оба равны true (что означает, что xbuf недостаточно велик даже для одного внешнего символа), тогда увеличивает XSIZE и повторяет с начала.
std:: codecvt_base :: partial Выводит преобразованные внешние символы из [ xbuf , xbuf_end ) в файл и повторяет с оставшимися непреобразованными внутренними символами из [ end , pptr ( ) ) . При неудачной записи завершается ошибкой (без повторения).
std:: codecvt_base :: noconv Выводит символы из [ pbase ( ) , pptr ( ) ) в файл.
std:: codecvt_base :: error Завершается ошибкой.
Если связанный файл не открыт ( is_open() возвращает false ), вывод всегда будет завершаться неудачей.
(since C++26)

Содержание

Параметры

ch - символ для сохранения в области вывода

Возвращаемое значение

Traits :: not_eof ( ch ) для указания успеха или Traits :: eof ( ) для указания неудачи.

Примечания

Если a_codecvt. always_noconv ( ) возвращает true , вызов a_codecvt. out ( ) может быть пропущен.

Пример

Смотрите также

[virtual]
записывает символы в связанную выходную последовательность из области вывода
(виртуальная защищенная функция-член std::basic_streambuf<CharT,Traits> )
[virtual]
читает из связанного файла
(виртуальная защищенная функция-член)