Partilhar via


basic_streambuf::overflow

Uma função virtual protegida que pode ser chamado 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 inserir em buffer, ou traits_type::EOF.

Valor de retorno

Se a função não obterá êxito, retorna traits_type::eof ou gera uma exceção.Caso contrário, retornará traits_type::not_eof(_Meta).O comportamento padrão é traits_type::eofretornar.

Comentários

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

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

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

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

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

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

A função consome os caracteres na área colocada entre pbase e ponteiros de pptr e reinicializa colocada na área.A função de overflow também deve receber nCh (se nCh não é EOF), ou pode escolher para colocar esse caractere novo colocada na área de modo que é consumida na chamada a seguir.

A definição de consome varia entre classes derivadas.Por exemplo, a classe de filebuf escrever seus caracteres em um arquivo, quando a classe de strstreambuf as mantenha no buffer (e se o buffer é designado como dinâmico) expande o buffer em resposta a uma chamada para transbordar.Esta expansão é obtida liberando o buffer antigo e novo, substituindo o com maior.Ponteiros são definidos como necessário.

Requisitos

Cabeçalho: <streambuf>

namespace: STD

Consulte também

Referência

basic_streambuf Class

iostream de programação

Convenções de iostreams