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
Elem
char_type.Tr
O caractere traits_type.
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
Constrói um objeto de tipo basic_streambuf. |
Typedefs
Associa um nome de tipo com o parâmetro do modelo de Elem . |
|
Associa um nome de tipo dentro do escopo de basic_streambuf com o parâmetro do modelo de Elem . |
|
Associa um nome de tipo dentro do escopo de basic_streambuf com o parâmetro do modelo de Elem . |
|
Associa um nome de tipo dentro do escopo de basic_streambuf com o parâmetro do modelo de Elem . |
|
Associa um nome de tipo com o parâmetro do modelo de Tr . |
Funções de membro
Uma função protegida que retorna um ponteiro para o início do buffer de entrada. |
|
Uma função protegida que retorna um ponteiro apenas após o término do buffer de entrada. |
|
Uma função protegida que retorna um ponteiro apenas após o término do buffer de saída. |
|
Uma função protegida que adiciona _Count ao próximo ponteiro para o buffer de entrada. |
|
Obtém a localidade do objeto de basic_streambuf . |
|
Uma função protegida que retorna um ponteiro para o próximo elemento do buffer de entrada. |
|
Uma função protegida, virtual chamada por pubimbue. |
|
Retorna o número de elementos que estão prontos para serem lidos no buffer. |
|
Uma função protegida virtual que pode ser chamada quando um novo caractere é inserido em um buffer cheio. |
|
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). |
|
Uma função protegida que retorna um ponteiro para o início do buffer de saída. |
|
Uma função protegida que adiciona count ao próximo ponteiro para o buffer de saída. |
|
Uma função protegida que retorna um ponteiro para o próximo elemento do buffer de saída. |
|
Define a localidade do objeto de basic_streambuf . |
|
Chama seekoff, uma função protegida virtual que foi substituída em uma classe derivada. |
|
Chama seekpos, uma função protegida virtual que foi substituída em uma classe derivada e redefine a posição atual do ponteiro. |
|
Chama setbuf, uma função protegida virtual que foi substituída em uma classe derivada. |
|
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. |
|
Lê e retorna o elemento atual, movimentando o ponteiro de fluxo. |
|
As tentativas virtuais protegidas da função de membro para alterar os cargos atuais dos fluxos controladas. |
|
As tentativas virtuais protegidas da função de membro para alterar os cargos atuais dos fluxos controladas. |
|
A função de membro virtual protegida executa um detalhe da operação cada buffer derivado do fluxo. |
|
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. |
|
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. |
|
Elemento atual do retorna sem alterar a posição do fluxo. |
|
Retorna o número de elementos. |
|
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. |
|
Lê o elemento atual e retorna o seguinte elemento. |
|
Coloca char_type no fluxo. |
|
Coloca um caractere no fluxo. |
|
Coloca uma cadeia de caracteres no fluxo. |
|
Mover depois do elemento atual no fluxo. |
|
Obtém um caractere do fluxo. |
|
Troca os valores nesse objeto pelos valores no parâmetro fornecido do objeto de basic_streambuf . |
|
Uma função virtual sombreada que tente sincronizar os fluxos controlados com todos os fluxos externos associados. |
|
Uma função protegida virtual que extrai o elemento atual do fluxo de entrada. |
|
Uma função protegida virtual que extrai o elemento atual do fluxo de entrada. |
|
Uma função protegida virtual que extrai os elementos de fluxo de entrada. |
|
Uma função protegida virtual que insere os elementos no fluxo de saída. |
Operadores
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++