Поделиться через


basic_streambuf::overflow

Защищенная виртуальная функция, могут вызывать при новый символ вставляется в полный буфер.

virtual int_type overflow( 
   int_type _Meta = traits_type::eof( ) 
);

Параметры

  • _Meta
    Символ, который необходимо вставить в буфер, traits_type:: или eof.

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

Если функция не может быть выполнено успешно, она возвращает traits_type::eof или создает исключение. В противном случае возвращается значение traits_type::_Meta (not_eof). Реакция на событие по умолчанию возвращает значение traits_type::eof.

Заметки

Если _Meta не сравнивает равно traits_type::eof, защищенной виртуальной функции-члена стремится вставка элемента traits_type::(to_char_type) _Meta в поток вывода. Она может этого сделать различными способами:

  • Если write position доступно, оно может содержать элемент в позиции записи и увеличить следующий указатель для буфера вывода.

  • Она может сделать доступной записи положение, выбрав новый или дополнительная память для буфера вывода.

  • Это может сделать доступным, положение записать выписки, во внешний назначению, или во всем элементам между началом и следующими указателями для буфера вывода.

Виртуальная функция переполнения вместе с функциями синхронизация и потеря значимости, определяет характеристики streambuf- производного класса. Каждый производный класс может реализовывать переполнение по-разному, но интерфейс с классом вызывающего потока совпадают.

Функция overflow наиболее часто называется открытыми функциями streambuf как sputc и sputn при положенная область полна, но другие классы, включая классы потока, могут вызывать overflow в любое время.

Функция использует символы в положенной области между pbase и указатели pptr и затем reinitializes положенная область. Функция overflow также должна использовать nCh (если nCh нет EOF), либо ее можно выбрать для этого символа в новую область положенную таким образом, она будет использоваться при следующем вызове.

Определение потребления меняется между производных классов. Например, класс filebuf записывает его символы в файл, а класс strstreambuf сохраняет их в текущем буфере и (если буфер назначенный динамического), развернуть буфер в ответ на вызов, чтобы переполнение. Это расширение достигается путем освобождения старый буфер и заменить его на новый, больше одного. Указатели меняются по мере необходимости.

Требования

Заголовок:<streambuf>

Пространство имен: std

См. также

Ссылки

Класс basic_streambuf

Программирование iostream

Соглашения iostreams