Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Descreve um buffer de fluxo que controla a transmissão de elementos do tipo Elem, cujas características de caracteres são determinadas pela classe Tr, de e para uma sequência de elementos armazenados em um objeto de matriz.
Sintaxe
template <class Elem, class Tr = char_traits<Elem>,
class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>
Parâmetros
Alloc
A classe alocator.
Elem
O tipo do elemento básico da cadeia de caracteres.
Tr
Os traços de caráter especializaram-se no elemento básico da cadeia de caracteres.
Observações
O objeto é alocado, estendido e liberado conforme necessário para acomodar alterações na sequência.
Um objeto de classe basic_stringbuf<Elem, Tr, Alloc> armazena uma cópia do ios_base:: argumento openmode de seu construtor como seu stringbufmodo de modo:
Se
mode & ios_base::infor diferente de zero, o buffer de entrada estará acessível. Para obter mais informações, consulte basic_streambuf classe.Se
mode & ios_base::outfor diferente de zero, o buffer de saída estará acessível.
Construtores
| Construtor | Descrição |
|---|---|
| basic_stringbuf | Constrói um objeto do tipo basic_stringbuf. |
Typedefs (definições de tipos)
| Nome do tipo | Descrição |
|---|---|
| allocator_type | O tipo é um sinônimo para o parâmetro de modelo Alloc. |
| char_type | Associa um nome de tipo ao parâmetro de modelo Elem . |
| int_type | Torna esse tipo dentro basic_filebufdo escopo equivalente ao tipo do mesmo nome no escopo Tr . |
| off_type | Torna esse tipo dentro basic_filebufdo escopo equivalente ao tipo do mesmo nome no escopo Tr . |
| pos_type | Torna esse tipo dentro basic_filebufdo escopo equivalente ao tipo do mesmo nome no escopo Tr . |
| traits_type | Associa um nome de tipo ao parâmetro de modelo Tr . |
Funções de membro
| Função de membro | Descrição |
|---|---|
| transbordamento | Uma função virtual protegida que pode ser chamada quando um novo caractere é inserido em um buffer completo. |
| Pbackfail | A função de membro virtual protegido tenta colocar de volta um elemento no buffer de entrada e, em seguida, torna-o o elemento atual (apontado pelo ponteiro seguinte). |
| Busca | A função de membro virtual protegido tenta alterar as posições atuais para os fluxos controlados. |
| Seekpos | A função de membro virtual protegido tenta alterar as posições atuais para os fluxos controlados. |
| STR | Define ou obtém o texto em um buffer de cadeia de caracteres sem alterar a posição de gravação. |
| permuta | |
| subfluxo | A função de membro virtual protegido para extrair o elemento atual do fluxo de entrada. |
Requerimentos
Cabeçalho:<Sstream>
Espaço de nomes: std
basic_stringbuf::allocator_type
O tipo é um sinônimo para o parâmetro de modelo Alloc.
typedef Alloc allocator_type;
basic_stringbuf::basic_stringbuf
Constrói um objeto do tipo basic_stringbuf.
basic_stringbuf(
ios_base::openmode _Mode = ios_base::in | ios_base::out);
basic_stringbuf(
const basic_string<Elem, Tr, Alloc>& str,
ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parâmetros
_Mode
Uma das enumerações em ios_base::openmode.
STR
Um objeto do tipo basic_string.
Observações
O primeiro construtor armazena um ponteiro nulo em todos os ponteiros que controlam o buffer de entrada e o buffer de saída. Para obter mais informações, consulte a seção Comentários da classe basic_streambuf. Ele também armazena _Mode como o modo stringbuf. Para obter mais informações, consulte a seção Comentários da classe basic_stringbuf.
O segundo construtor aloca uma cópia da sequência controlada pelo objeto string str. Se _Mode & ios_base::in for diferente de zero, ele define o buffer de entrada para iniciar a leitura no início da sequência. Se _Mode & ios_base::out for diferente de zero, ele define o buffer de saída para começar a gravar no início da sequência. Ele também armazena _Mode como o modo stringbuf. Para obter mais informações, consulte a seção Comentários da classe basic_stringbuf.
basic_stringbuf::char_type
Associa um nome de tipo ao parâmetro de modelo Elem .
typedef Elem char_type;
basic_stringbuf::int_type
Torna esse tipo dentro do escopo do basic_filebuf equivalente ao tipo do mesmo nome no Tr escopo.
typedef typename traits_type::int_type int_type;
basic_stringbuf::off_type
Torna esse tipo dentro do escopo do basic_filebuf equivalente ao tipo do mesmo nome no Tr escopo.
typedef typename traits_type::off_type off_type;
basic_stringbuf::estouro
Uma função virtual protegida que pode ser chamada quando um novo caractere é inserido em um buffer completo.
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 for bem-sucedida, ela retornará traits_type::eof. Caso contrário, ele retorna traits_type::not_eof(_ Meta).
Observações
Se _Meta não for comparável a traits_type::eof, a função de membro virtual protegido tentará inserir o elemento traits_type::to_char_type(_Meta) no buffer de saída. Pode fazê-lo de várias formas:
Se uma posição de gravação estiver disponível, ela poderá armazenar o elemento na posição de gravação e incrementar o próximo ponteiro para o buffer de saída.
Ele pode disponibilizar uma posição de gravação alocando armazenamento novo ou adicional para o buffer de saída. Estender o buffer de saída dessa maneira também estende qualquer buffer de entrada associado.
basic_stringbuf::p backfail
A função de membro virtual protegido tenta colocar de volta um elemento no buffer de entrada e, em seguida, torná-lo o elemento atual (apontado pelo ponteiro seguinte).
virtual int_type pbackfail(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 for bem-sucedida, ela retornará traits_type::eof. Caso contrário, ele retorna traits_type::not_eof(_ Meta).
Observações
Se _Meta comparar igual a traits_type::eof, o elemento a ser empurrado para trás é efetivamente aquele que já está no fluxo antes do elemento atual. Caso contrário, esse elemento é substituído por byte = traits_type::to_char_type(_ Meta). A função pode colocar de volta um elemento de várias maneiras:
Se uma posição de putback estiver disponível e o elemento armazenado lá for comparado igual a byte, ele poderá diminuir o ponteiro seguinte para o buffer de entrada.
Se uma posição putback estiver disponível, e se o modo stringbuf permitir que a sequência seja alterada ( mode & ios_base::out é diferente de zero), ele pode armazenar byte na posição putback e diminuir o ponteiro seguinte para o buffer de entrada.
basic_stringbuf::p os_type
Torna esse tipo dentro do escopo do basic_filebuf equivalente ao tipo do mesmo nome no Tr escopo.
typedef typename traits_type::pos_type pos_type;
basic_stringbuf::seekoff
A função de membro virtual protegido tenta alterar as posições atuais para os fluxos controlados.
virtual pos_type seekoff(
off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parâmetros
_Off
A posição a procurar em relação a _Way. Para obter mais informações, consulte basic_stringbuf::off_type.
_Way
O ponto de partida para as operações de compensação. Consulte ios_base::seekdir para valores possíveis.
_Mode
Especifica o modo para a posição do ponteiro. O padrão é permitir que você modifique as posições de leitura e gravação. Para obter mais informações, consulte ios_base::openmode.
Valor de retorno
Retorna a nova posição ou uma posição de fluxo inválida.
Observações
Para um objeto de classe basic_stringbuf<Elem, Tr, Alloc>, uma posição de fluxo consiste puramente em um deslocamento de fluxo. O deslocamento zero designa o primeiro elemento da sequência controlada.
A nova posição é determinada da seguinte forma:
Se
_Way==ios_base::beg, a nova posição é o início do fluxo mais _Off.Se
_Way==ios_base::cur, a nova posição é a posição de fluxo atual mais _Off.Se
_Way==ios_base::end, a nova posição é o final do fluxo mais _Off.
Se _Mode & ios_base::in for diferente de zero, a função altera a próxima posição a ser lida no buffer de entrada. Se _Mode & ios_base::out for diferente de zero, a função altera a próxima posição para gravar no buffer de saída. Para que um fluxo seja afetado, seu buffer deve existir. Para que uma operação de posicionamento seja bem-sucedida, a posição resultante do fluxo deve estar dentro da sequência controlada. Se a função afeta ambas as posições de fluxo, _Way deve ser ios_base::beg ou ios_base::end e ambos os fluxos são posicionados no mesmo elemento. Caso contrário (ou se nenhuma das posições for afetada), a operação de posicionamento falhará.
Se a função conseguir alterar uma ou ambas as posições do fluxo, ela retornará a posição do fluxo resultante. Caso contrário, ele falhará e retornará uma posição de fluxo inválida.
basic_stringbuf::seekpos
A função de membro virtual protegido tenta alterar as posições atuais para os fluxos controlados.
virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parâmetros
_Sp
A posição a procurar.
_Mode
Especifica o modo para a posição do ponteiro. O padrão é permitir que você modifique as posições de leitura e gravação.
Valor de retorno
Se a função conseguir alterar uma ou ambas as posições do fluxo, ela retornará a posição do fluxo resultante. Caso contrário, ele falhará e retornará uma posição de fluxo inválida. Para determinar se a posição do fluxo é inválida, compare o valor de retorno com pos_type(off_type(-1)).
Observações
Para um objeto da classe basic_stringbuf<Elem, Tr, Alloc>, uma posição de fluxo consiste puramente em um deslocamento de fluxo. O deslocamento zero designa o primeiro elemento da sequência controlada. A nova posição é determinada por _ Sp.
Se o modo & ios_base::in for diferente de zero, a função alterará a próxima posição a ser lida no buffer de entrada. Se o modo & ios_base::out for diferente de zero, a função alterará a próxima posição a ser gravada no buffer de saída. Para que um fluxo seja afetado, seu buffer deve existir. Para que uma operação de posicionamento seja bem-sucedida, a posição resultante do fluxo deve estar dentro da sequência controlada. Caso contrário (ou se nenhuma das posições for afetada), a operação de posicionamento falhará.
basic_stringbuf::str
Define ou obtém o texto em um buffer de cadeia de caracteres sem alterar a posição de gravação.
basic_string<Elem, Tr, Alloc> str() const;
void str(
const basic_string<Elem, Tr, Alloc>& _Newstr);
Parâmetros
_Newstr
A nova cadeia de caracteres.
Valor de retorno
Retorna um objeto da classe basic_string<Elem, Tr, Alloc >, cuja sequência controlada é uma cópia da sequência controlada por *this.
Observações
A primeira função de membro retorna um objeto de classe basic_string<Elem, Tr, Alloc>cuja sequência controlada é uma cópia da sequência controlada por *this. A sequência copiada depende do modo stringbuf armazenado:
Se o modo & ios_base::out for diferente de zero e existir um buffer de saída, a sequência será todo o buffer de saída ( epptr - pbase elements começando com
pbase).Se o modo & ios_base::in for diferente de zero e existir um buffer de entrada, a sequência será todo o buffer de entrada ( egptr - eback elements starting with
eback).Caso contrário, a sequência copiada estará vazia.
A segunda função de membro deslocaliza qualquer sequência atualmente controlada pelo *this. Em seguida, atribui uma cópia da sequência controlada por _Newstr. Se o modo & ios_base::in for diferente de zero, ele define o buffer de entrada para iniciar a leitura no início da sequência. Se o modo & ios_base::out for diferente de zero, ele define o buffer de saída para começar a gravar no início da sequência.
Exemplo
// basic_stringbuf_str.cpp
// compile with: /EHsc
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
basic_string<char> i( "test" );
stringstream ss;
ss.rdbuf( )->str( i );
cout << ss.str( ) << endl;
ss << "z";
cout << ss.str( ) << endl;
ss.rdbuf( )->str( "be" );
cout << ss.str( ) << endl;
}
test
zest
be
basic_stringbuf::traits_type
Associa um nome de tipo ao parâmetro de modelo Tr .
typedef Tr traits_type;
Observações
O tipo é um sinônimo para o parâmetro de modelo Tr.
basic_stringbuf::fluxo inferior
Função virtual protegida para extrair o elemento atual do fluxo de entrada.
virtual int_type underflow();
Valor de retorno
Se a função não for bem-sucedida, ela retornará traits_type::eof. Caso contrário, ele retorna o elemento atual no fluxo de entrada, que é convertido.
Observações
A função de membro virtual protegido tenta extrair o elemento byte atual do buffer de entrada, avançar a posição do fluxo atual e retornar o elemento como traits_type::to_int_type( byte). Ele pode fazer isso de uma maneira: se uma posição de leitura estiver disponível, ela será byte tomada como o elemento armazenado na posição de leitura e avançará o próximo ponteiro para o buffer de entrada.
basic_streambuf::swap
Troca o conteúdo desse buffer de cadeia de caracteres por outro buffer de cadeia de caracteres.
void basic_stringbuf<T>::swap(basic_stringbuf& other)
Parâmetros
outros
O basic_stringbuf cujo conteúdo será trocado com este basic_stringbuf.
basic_stringbuf::operador=
Atribui o conteúdo do basic_stringbuf no lado direito do operador ao basic_stringbuf no lado esquerdo.
basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)
Parâmetros
outros
Um basic_stringbuf cujo conteúdo, incluindo características de localidade, será atribuído ao stringbuf no lado esquerdo do operador.
Ver também
segurança de threads na biblioteca padrão C++
Programação iostream
iostreams Convenções