basic_streambuf::overflow
Защищенная виртуальная функция, которая может вызываться, когда новый символ вставляется в полный буфер.
virtual int_type overflow(
int_type _Meta = traits_type::eof( )
);
Параметры
- _Meta
Символ, который необходимо вставить в буфер или traits_type::eof.
Возвращаемое значение
Если функция не может завершиться успешно, возвращается traits_type::eof или вызывает исключение.В противном случае оно возвращает traits_type::not_eof(_Meta).По умолчанию функциональности возвращать traits_type::eof.
Заметки
Если _Meta не сравнивает равно traits_type::eof, защищенный виртуальный функцию-член стремится вставить элемент traits_type::to_char_type(_Meta) в поток вывода.Он может сделать различными способами:
Если write position доступно, то он может хранить элемент в позицию записи и увеличить следующий указатель для выходного буфера.
Она может освободить позиции записи, выбрав новую или дополнительная память для выходного буфера.
Это может сделать доступными части записи путем записи, к определенной цели или внешний по всем элементам между началом и следующими указателями для выходного буфера.
Виртуальная функция переполнения вместе с функциями синхронизация и потеря значимости, указывающее характеристики streambuf- производного класса.Каждый производный класс может реализовать переполнение по-другому, но интерфейс с вызывающим классом потока совпадают.
Функция overflow наиболее часто называется общим функциями streambuf как sputc и sputn при положенная область заполнена, но другие классы, включая классы потока, могут вызвать overflow в любое время.
Функция использует символы в положенной области между pbase и указателями pptr а затем повторно инициализирует положенная область.Функция overflow также должна использовать nCh (если nCh не EOF) или он может выбрать поместить этот символ в новую область положенную так как она будет используется при следующем вызове.
Определение потребления изменяется среди производных классов.Например, класс filebuf записывает ее символы в файл, а класс strstreambuf сохраняет их в буфер и (если буфер назначенный динамическое), разверните буфер в ответ на вызов для переполнить.Это расширение достигается с освобождением старый буфер и заменить его с новый больший на единицу.Указатели меняются по мере необходимости.
Требования
заголовок: <streambuf>
std пространство имен: