Partilhar via


basic_streambuf::overflow

Uma função protegida virtual que pode ser chamada quando um novo caractere é inserido em um buffer cheio.

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

Parâmetros

  • _Meta
    O caractere a ser inserido no buffer, ou traits_type::EOF.

Valor de retorno

Se a função não pode ser bem-sucedida, retornará traits_type::eof ou lance uma exceção. Caso contrário, retorna traits_type::not_eof(_Meta). O comportamento padrão é retornar traits_type::eof.

Comentários

Se _Meta não compara igual a traits_type::eof, a função de membro virtual protegida se esforça inserir o elemento traits_type::to_char_type(_Meta) no fluxo de saída. Pode fazer isso em muitas maneiras:

  • Se write position estiver disponível, pode armazenar o elemento na posição de gravação e incrementar o próximo ponteiro para o buffer de saída.

  • Pode fazer uma posição de gravação disponível atribuindo o novo ou armazenamento adicional para o buffer de saída.

  • Pode fazer uma posição de gravação gravando disponível para fora do, a qualquer destino externo, a alguns ou todos os elementos entre o início e os próximos ponteiros para o buffer de saída.

A função virtual de estouro, junto com as funções de sincronização e de estouro negativo , define as características da classe streambuf- derivada. Cada classe derivada pode implementar o estouro de forma diferente, mas a interface com a classe de fluxo de chamada é a mesma.

A função de overflow com mais frequência será chamada por funções públicas de streambuf como sputc e sputn quando a área colocada estiver completa, mas outras classes, incluindo as classes de fluxo, podem chamar overflow a qualquer momento.

A função utiliza os caracteres na área colocada entre pbase e os ponteiros de pptr e reinicializa colocada na área. A função de overflow também deve consumir nCh (se nCh não é EOF), ou pode escolher para colocar esse caractere na nova área colocada de modo que foi consumida na próxima chamada.

A definição de consumir varia entre classes derivadas. Por exemplo, a classe de filebuf grava os caracteres em um arquivo, quando a classe dos strstreambuf manter no buffer e (se o buffer seja designado como dinâmico) expande o buffer em resposta a uma chamada para transbordar. Essa extensão é obtida liberando o buffer anterior e substituindo o pelo novo, maior. Os ponteiros são ajustados conforme necessário.

Requisitos

streambuf <deCabeçalho: >

Namespace: std

Consulte também

Referência

Classe basic_streambuf

Programação iostream

Convenções iostreams