Compartilhar via


Classe basic_streambuf

Descreve uma classe base abstrata para derivar um buffer de fluxo, que controla a transmissão de elementos para uma representação específica de um fluxo.

template<class Elem, class Tr = char_traits<Elem> >
   class basic_streambuf;

Parâmetros

Comentários

A classe do modelo descreve uma classe base abstrata para derivar um buffer de fluxo, que controla a transmissão de elementos para uma representação específica de um fluxo. Um objeto de ajuda de basic_streambuf da classe controla um fluxo com os elementos de tipo Tr, também conhecidos como char_type, cujos características de caractere são determinados pela classe char_traits, também conhecido como traits_type.

Cada buffer de fluxo controla conceitual dois fluxos independentes: um para extrações entrada () e um para inserções saída (). Uma representação específica pode, no entanto, ao executar qualquer um ou ambos os fluxos inacessível. Geralmente mantêm qualquer relação entre os dois fluxos. O que você insere no fluxo de saída de<basic_stringbufElem, objeto> de Tr, por exemplo, é que você extrair posterior do fluxo de entrada. Quando você posiciona um fluxo de basic_filebuf<Elem, objeto> de Tr, posiciona o outro fluxo em tandem.

A interface pública à classe basic_streambuf de modelo fornece as operações comuns a todos os buffers de fluxo, especializadas de qualquer modo. A interface protegida fornece as operações necessárias para uma representação específica de um fluxo fazer seu trabalho. As funções de membro virtuais protegidas permitem personalizar o comportamento de um buffer derivado do fluxo para uma representação específica de um fluxo. Cada buffer derivado do fluxo nessa biblioteca descreve como especializa o comportamento das funções de membro virtuais protegidas. O comportamento padrão da classe base, que é geralmente não fazer nada, é descrito neste tópico.

As funções de membro protegidas restantes controlam a cópia a e de qualquer armazenamento fornecido para armazenar em buffer transmissões para e dos fluxos. Um buffer de entrada, por exemplo, é caracterizado por:

  • eback, um ponteiro no início do buffer.

  • gptr, um ponteiro para o próximo elemento a ser lido.

  • egptr, um ponteiro apenas após o término do buffer.

De forma similar, um buffer de saída é caracterizado por:

  • pbase, um ponteiro no início do buffer.

  • pptr, um ponteiro para o próximo elemento a gravação.

  • epptr, um ponteiro apenas após o término do buffer.

Para qualquer buffer, o seguinte protocolo é usado:

  • Se o próximo ponteiro for nulo, nenhum buffer existe. Caso contrário, todos os três ponto de ponteiros na mesma arranja em sequência. Podem ser comparados com segurança para a ordem.

  • Para um buffer de saída, se o ponteiro seguir compara menor que o ponteiro de extremidade, você pode armazenar um elemento na posição de gravação designada pelo próximo ponteiro.

  • Para um buffer de entrada, se o ponteiro seguir compara menor que o ponteiro de extremidade, você pode ler um elemento na posição de leitura atribuída pelo próximo ponteiro.

  • Para um buffer de entrada, se o ponteiro de início compara menor que o próximo ponteiro, você pode colocar ao backup que um elemento na posição do putback tiver designado pelo próximo ponteiro diminuído.

Todas as funções de membro que virtuais protegidas você escrever para uma classe derivada de<basic_streambufElem, Tr> devem cooperar manter esse protocolo.

Um objeto da classe basic_streambuf<Elem, Tr> armazena os seis ponteiros descritos anteriormente. Também armazena um objeto da localidade em um objeto de tipo localidade potencial para uso por um buffer derivado do fluxo.

Construtores

basic_streambuf

Constrói um objeto de tipo basic_streambuf.

Typedefs

char_type

Associa um nome de tipo com o parâmetro do modelo de Elem .

int_type

Associa um nome de tipo dentro do escopo de basic_streambuf com o parâmetro do modelo de Elem .

off_type

Associa um nome de tipo dentro do escopo de basic_streambuf com o parâmetro do modelo de Elem .

pos_type

Associa um nome de tipo dentro do escopo de basic_streambuf com o parâmetro do modelo de Elem .

traits_type

Associa um nome de tipo com o parâmetro do modelo de Tr .

Funções de membro

eback

Uma função protegida que retorna um ponteiro para o início do buffer de entrada.

egptr

Uma função protegida que retorna um ponteiro apenas após o término do buffer de entrada.

epptr

Uma função protegida que retorna um ponteiro apenas após o término do buffer de saída.

gbump

Uma função protegida que adiciona _Count ao próximo ponteiro para o buffer de entrada.

getloc

Obtém a localidade do objeto de basic_streambuf .

gptr

Uma função protegida que retorna um ponteiro para o próximo elemento do buffer de entrada.

impregne

Uma função protegida, virtual chamada por pubimbue.

in_avail

Retorna o número de elementos que estão prontos para serem lidos no buffer.

estouro

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

pbackfail

Uma função de membro virtual protegida que tenta colocar a parte de um elemento no fluxo de entrada, então a torna o elemento atual (apontada pelo ponteiro seguir).

pbase

Uma função protegida que retorna um ponteiro para o início do buffer de saída.

pbump

Uma função protegida que adiciona count ao próximo ponteiro para o buffer de saída.

pptr

Uma função protegida que retorna um ponteiro para o próximo elemento do buffer de saída.

pubimbue

Define a localidade do objeto de basic_streambuf .

pubseekoff

Chama seekoff, uma função protegida virtual que foi substituída em uma classe derivada.

pubseekpos

Chama seekpos, uma função protegida virtual que foi substituída em uma classe derivada e redefine a posição atual do ponteiro.

pubsetbuf

Chama setbuf, uma função protegida virtual que foi substituída em uma classe derivada.

pubsync

Chama sincronização, uma função protegida virtual que foi substituída em uma classe derivada e atualiza o fluxo externa associada a esse buffer.

sbumpc

Lê e retorna o elemento atual, movimentando o ponteiro de fluxo.

seekoff

As tentativas virtuais protegidas da função de membro para alterar os cargos atuais dos fluxos controladas.

seekpos

As tentativas virtuais protegidas da função de membro para alterar os cargos atuais dos fluxos controladas.

setbuf

A função de membro virtual protegida executa um detalhe da operação cada buffer derivado do fluxo.

setg

Uma função protegida que armazena o ponteiro de _Gbeg no início, o _Gnext no próximo ponteiro, e o _Gend no ponteiro de extremidade para o buffer de entrada.

setp

Uma função protegida que armazena o ponteiro e o _Pend de _Pbeg no início do ponteiro de extremidade para o buffer de saída.

sgetc

Elemento atual do retorna sem alterar a posição do fluxo.

sgetn

Retorna o número de elementos.

showmanyc

Função de membro virtual sombreada que retorna uma contagem do número de caracteres que podem ser extraídos do fluxo de entrada e garantir que o programa não esteja sujeito a uma espera indefinida.

snextc

Lê o elemento atual e retorna o seguinte elemento.

sputbackc

Coloca char_type no fluxo.

sputc

Coloca um caractere no fluxo.

sputn

Coloca uma cadeia de caracteres no fluxo.

stossc

Mover depois do elemento atual no fluxo.

sungetc

Obtém um caractere do fluxo.

troca

Troca os valores nesse objeto pelos valores no parâmetro fornecido do objeto de basic_streambuf .

sincronização

Uma função virtual sombreada que tente sincronizar os fluxos controlados com todos os fluxos externos associados.

uflow

Uma função protegida virtual que extrai o elemento atual do fluxo de entrada.

estouro negativo

Uma função protegida virtual que extrai o elemento atual do fluxo de entrada.

xsgetn

Uma função protegida virtual que extrai os elementos de fluxo de entrada.

xsputn

Uma função protegida virtual que insere os elementos no fluxo de saída.

Operadores

operador=

Atribui os valores deste objeto em outro objeto de basic_streambuf .

Requisitos

streambuf <deCabeçalho: >

Namespace: std

Consulte também

Referência

Segurança de threads na Biblioteca Padrão C++

Programação iostream

Convenções iostreams

Outros recursos

os membros do basic_streambuf

<streambuf> Membros