Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Descreve um buffer de fluxo que controla a transmissão de elementos do tipo Elem, cujas características de caractere são determinadas pela classe Tr, para e de 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 do alocador.
Elem
O tipo do elemento básico da cadeia de caracteres.
Tr
As características de caractere especializadas no elemento básico da cadeia de caracteres.
Comentários
O objeto é alocado, estendido e liberado, conforme o necessário, para acomodar as alterações na sequência.
Um objeto da classe basic_stringbuf<Elem, Tr, Alloc> armazena uma cópia do argumento ios_base::openmode de seu construtor como seu modo stringbufmode:
Se
mode & ios_base::iné diferente de zero, o buffer de entrada está acessível. Para obter mais informações, consulte a Classe basic_streambuf.Se
mode & ios_base::outé diferente de zero, o buffer de saída está acessível.
Construtores
| Construtor | Descrição |
|---|---|
| basic_stringbuf | Constrói um objeto do tipo basic_stringbuf. |
Typedefs
| Nome do tipo | Descrição |
|---|---|
| allocator_type | O tipo é um sinônimo do parâmetro de modelo Alloc. |
| char_type | Associa um nome de tipo ao parâmetro do modelo Elem. |
| int_type | Faz com que esse tipo no escopo de basic_filebuf seja equivalente ao tipo com o mesmo nome no escopo Tr. |
| off_type | Faz com que esse tipo no escopo de basic_filebuf seja equivalente ao tipo com o mesmo nome no escopo Tr. |
| pos_type | Faz com que esse tipo no escopo de basic_filebuf seja equivalente ao tipo com o 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 |
|---|---|
| transbordar | Uma função protegida e virtual que pode ser chamada quando um novo caractere é inserido em um buffer cheio. |
| pbackfail | A função membro virtual protegida tenta colocar um elemento de volta no buffer de entrada, em seguida, faz com que ele se torne o elemento atual (apontado pelo próximo ponteiro). |
| busca | A função membro virtual protegida tenta alterar as posições atuais para os fluxos controlados. |
| seekpos | A função membro virtual protegida 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. |
| trocar | |
| Underflow | A função membro virtual protegida para extrair o elemento atual do fluxo de entrada. |
Requisitos
Cabeçalho:<sstream>
Namespace: std
basic_stringbuf::allocator_type
O tipo é um sinônimo do 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
_Modo
Uma das enumerações em ios_base::openmode.
Str
Um objeto do tipo basic_string.
Comentários
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 de 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 de cadeia de caracteres str. Se _Mode & ios_base::in é diferente de zero, ele define o buffer de entrada para começar a ler no início da sequência. Se _Mode & ios_base::out é diferente de zero, ele define o buffer de saída para começar a escrever no início da sequência. Ele também armazena _Mode como o modo de 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 do modelo Elem.
typedef Elem char_type;
basic_stringbuf::int_type
Torna esse tipo no escopo de basic_filebuf equivalente ao tipo de mesmo nome no escopo de Tr.
typedef typename traits_type::int_type int_type;
basic_stringbuf::off_type
Torna esse tipo no escopo de basic_filebuf equivalente ao tipo de mesmo nome no escopo de Tr.
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 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 tiver êxito, ela retornará traits_type::eof. Caso contrário, retornará traits_type::not_eof(_ Meta).
Comentários
Se _Meta não comparar como igual a traits_type::eof, a função membro virtual protegida tentará inserir o elemento traits_type::to_char_type(_Meta) no buffer de saída. Isso pode ser feito de várias maneiras:
Se houver uma posição de gravação 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 ao buffer de saída. Estender o buffer de saída dessa forma também estende qualquer buffer de entrada associado.
basic_stringbuf::p backfail
A função membro virtual protegida tenta colocar um elemento de volta no buffer de entrada e, em seguida, faz com que ele seja o elemento atual (apontado pelo próximo ponteiro).
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 tiver êxito, ela retornará traits_type::eof. Caso contrário, retornará traits_type::not_eof(_ Meta).
Comentários
Se _Meta for comparável a traits_type::eofeof, o elemento a ser retornado por push será efetivamente aquele que já estava no fluxo antes do elemento atual. Caso contrário, esse elemento será substituído por byte = traits_type::to_char_type(_ Meta). A função pode colocar um elemento de volta de várias maneiras:
Se uma posição para colocar de volta estiver disponível e o elemento armazenado lá for comparado como igual a byte, ela poderá decrementar o próximo ponteiro para o buffer de entrada.
Se uma posição para colocar de volta estiver disponível e se o modo de stringbuf permitir que a sequência seja alterada (mode & ios_base::out é diferente de zero), ela poderá armazenar byte na posição para colocar de volta e decrementar o próximo ponteiro para o buffer de entrada.
basic_stringbuf::p os_type
Torna esse tipo no escopo de basic_filebuf equivalente ao tipo de mesmo nome no escopo de Tr.
typedef typename traits_type::pos_type pos_type;
basic_stringbuf::Seekoff
A função membro virtual protegida 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
_Desligado
A posição a ser buscada para o relativo a _Way. Para obter mais informações, consulte basic_stringbuf::off_type.
_Caminho
O ponto de partida para operações de deslocamento. Consulte ios_base::seekdir para obter os valores possíveis.
_Modo
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.
Comentários
Para um objeto da classe basic_stringbuf<Elem, Tr, Alloc>, uma posição de fluxo consiste exclusivamente 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 será o início do fluxo mais _Off.Se
_Way==ios_base::cur, a nova posição será a posição atual do fluxo mais _ Off.Se
_Way==ios_base::end, a nova posição será o final do fluxo mais _Off.
Se _Mode & ios_base::in é diferente de zero, a função altera a próxima posição a ser lida no buffer de entrada. Se _Mode & ios_base::out é diferente de zero, a função altera a próxima posição a ser gravada no buffer de saída. Para que um fluxo seja afetado, o buffer deve existir. Para que uma operação de posicionamento seja bem-sucedida, a posição do fluxo resultante deve estar dentro da sequência controlada. Se a função afetar as duas posições de fluxo, _Way deverá ser ios_base::beg ou ios_base::end e ambos os fluxos serão posicionados no mesmo elemento. Caso contrário (ou se nenhuma posição for afetada), a operação de posicionamento falhará.
Se a função tiver êxito na alteração de uma ou de ambas as posições de fluxo, ela retornará a posição de fluxo resultante. Caso contrário, ela falhará e retornará uma posição de fluxo inválida.
basic_stringbuf::seekpos
A função membro virtual protegida 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 pela qual buscar.
_Modo
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 tiver êxito na alteração de uma ou de ambas as posições de fluxo, ela retornará a posição de fluxo resultante. Caso contrário, ela falhará e retornará uma posição de fluxo inválida. Para determinar se a posição de fluxo é inválida, compare o valor retornado com pos_type(off_type(-1)).
Comentários
Para um objeto da classe basic_stringbuf<Elem, Tr, Alloc>, uma posição de fluxo consiste exclusivamente em um deslocamento de fluxo. O deslocamento zero designa o primeiro elemento da sequência controlada. A nova posição é determinada por _ Sp.
Se mode & ios_base::in é diferente de zero, a função altera a próxima posição a ser lida no buffer de entrada. Se mode & ios_base::out é diferente de zero, a função altera a próxima posição a ser gravada no buffer de saída. Para que um fluxo seja afetado, o buffer deve existir. Para que uma operação de posicionamento seja bem-sucedida, a posição do fluxo resultante deve estar dentro da sequência controlada. Caso contrário (ou se nenhuma posição 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.
Comentários
A primeira função membro retorna um objeto da 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 de stringbuf armazenado:
Se mode & ios_base::out é diferente de zero e existe um buffer de saída, a sequência é o buffer de saída inteiro (elementos epptr - pbase que começam com
pbase).Se mode & ios_base::in é diferente de zero e existe um buffer de entrada, a sequência é todo o buffer de entrada (elementos egptr - eback que começam com
eback).Caso contrário, a sequência copiada fica vazia.
A segunda função membro desaloca qualquer sequência controlada atualmente por *this. Em seguida, aloca uma cópia da sequência controlada por _Newstr. Se mode & ios_base::in é diferente de zero, ela define o buffer de entrada para começar a ler no início da sequência. Se mode & ios_base::out é diferente de zero, ela 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;
Comentários
O tipo é um sinônimo do parâmetro de modelo Tr.
basic_stringbuf::underflow
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 obtiver êxito, ela retornará traits_type::eof. Caso contrário, ela retornará o elemento atual no fluxo de entrada, que é convertido.
Comentários
A função membro virtual protegida tenta extrair o elemento atual byte do buffer de entrada, avança a posição de fluxo atual e retorna o elemento como traits_type::to_int_type( byte). A única maneira possível de fazer isso: se houver uma posição de leitura estiver disponível, ela usará byte como o elemento armazenado na posição 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 com 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 para o basic_stringbuf no lado esquerdo.
basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)
Parâmetros
outros
Um basic_stringbuf cujo conteúdo, incluindo as características de localidade, será atribuído a stringbuf no lado esquerdo do operador.
Confira também
Acesso Thread-Safe na Biblioteca Padrão C++
Programação de iostream
Convenções de iostreams