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