Classe basic_ios
O modelo de classe descreve as funções membro e de armazenamento comuns a ambos os fluxos de entrada (do modelo de classe basic_istream
) e os fluxos de saída (do modelo de classe basic_ostream
) que dependem dos parâmetros do modelo. (A classe ios_base
descreve o que é comum e não depende de parâmetros de modelo.) Um objeto de classe basic_ios<class Elem, class Traits>
ajuda a controlar um fluxo com elementos do tipo Elem
, cujas características de caractere são determinadas pela classe Traits
.
Sintaxe
template <class Elem, class Traits>
class basic_ios : public ios_base
Parâmetros
Elem
Um tipo de caractere.
Traits
Um tipo que fornece informações sobre o tipo de caractere, usa char_traits < Elem >
por padrão.
Comentários
Um objeto da classe basic_ios<class Elem, class Traits>
armazena:
Um ponteiro de ligação para um objeto de classe
basic_istream<Elem, Traits>
.Um ponteiro de buffer de fluxo para um objeto do tipo
basic_streambuf<Elem, Traits >
.Informações de estado de fluxo em um objeto base do tipo
ios_base
.Um caractere de preenchimento em um objeto do tipo
char_type
.
Para obter mais informações, consulte basic_istream
e basic_streambuf
.
Construtores
Construtor | Descrição |
---|---|
basic_ios |
Constrói a classe basic_ios . |
Typedefs
Nome do tipo | Descrição |
---|---|
char_type |
Um sinônimo para o parâmetro de modelo Elem . |
int_type |
Um sinônimo de Traits::int_type . |
off_type |
Um sinônimo de Traits::off_type . |
pos_type |
Um sinônimo de Traits::pos_type . |
traits_type |
Um sinônimo para o parâmetro de modelo Traits . |
Funções de membro
Função de membro | Descrição |
---|---|
bad |
Indica a perda de integridade do buffer de fluxo. |
clear |
Limpa todos os sinalizadores de erro. |
copyfmt |
Copia sinalizadores de um fluxo para outro. |
eof |
Indica se o final de um fluxo foi atingido. |
exceptions |
Indica quais exceções serão lançadas pelo fluxo. |
fail |
Indica falha ao extrair um campo válido de um fluxo. |
fill |
Especifica ou retorna o caractere que será usado quando o texto não for tão grande quanto o fluxo. |
good |
Indica que o fluxo está em boas condições. |
imbue |
Altera a localidade. |
init |
Chamado por construtores basic_ios . |
move |
Move todos os valores, exceto o ponteiro para o buffer de fluxo, do parâmetro para o objeto atual. |
narrow |
Localiza o char equivalente para um determinado char_type . |
rdbuf |
Encaminha o fluxo para um buffer especificado. |
rdstate |
Lê o estado dos bits para sinalizadores. |
set_rdbuf |
Atribui um buffer de fluxo para ser o buffer de leitura para esse objeto de fluxo. |
setstate |
Define sinalizadores adicionais. |
swap |
Troca os valores nesse objeto basic_ios por aqueles de outro objeto basic_ios . Os ponteiros para buffers de fluxo não são trocados. |
tie |
Garante que um fluxo seja processado antes de outro. |
widen |
Localiza o char_type equivalente a um determinado char. |
Operadores
Operador | Descrição |
---|---|
explicit operator bool |
Permite o uso de um objeto basic_ios como um bool . Conversão de tipo automática é desabilitada para evitar efeitos colaterais comuns não intencionais. |
operator void * |
Indica se o fluxo ainda é válido. |
operator! |
Indica se o fluxo não é inválido. |
Requisitos
Cabeçalho: <ios>
Namespace: std
basic_ios::bad
Indica a perda de integridade do buffer de fluxo
bool bad() const;
Valor de retorno
true
se rdstate & badbit
for diferente de zero; caso contrário false
.
Para obter mais informações sobre badbit
o , consulte ios_base::iostate
.
Exemplo
// basic_ios_bad.cpp
// compile with: /EHsc
#include <iostream>
int main( void )
{
using namespace std;
bool b = cout.bad( );
cout << boolalpha;
cout << b << endl;
b = cout.good( );
cout << b << endl;
}
basic_ios::basic_ios
Constrói a classe basic_ios
.
explicit basic_ios(basic_streambuf<Elem, Traits>* sb);
basic_ios();
Parâmetros
sb
Buffer padrão para armazenar elementos de entrada ou saída.
Comentários
O primeiro construtor inicializa seus objetos de membro chamando init(_ Sb)
. O segundo construtor (protegido) deixa seus objetos do membro não inicializados. Uma chamada posterior a init
precisa inicializar o objeto antes de ser destruída com segurança.
basic_ios::char_type
Um sinônimo para o parâmetro de modelo Elem
.
typedef Elem char_type;
basic_ios::clear
Limpa todos os sinalizadores de erro.
void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);
Parâmetros
state
(Opcional) Os sinalizadores a serem definidos após limpeza de todos os sinalizadores. Assume o padrão de goodbit
.
reraise
(Opcional) Especifica se a exceção deve ser gerada novamente. Assume false
por padrão (não irá gerar novamente a exceção).
Comentários
Os sinalizadores são goodbit
, failbit
, eofbit
e badbit
. Testar esses sinalizadores com good
, bad
, eof
e fail
A função de membro substitui as informações de estado de fluxo armazenadas com:
state | (rdbuf != 0 goodbit : badbit)
Se state&exceptions
for diferente de zero, gerará um objeto da classe failure
.
Para obter mais informações, consulte rdbuf
e exceptions
.
Exemplo
Confira rdstate
e getline
para obter exemplos usando clear
.
basic_ios::copyfmt
Copia sinalizadores de um fluxo para outro.
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);
Parâmetros
right
O fluxo cujos sinalizadores você deseja copiar.
Valor de retorno
O objeto this
para o fluxo para o qual você está copiando os sinalizadores.
Comentários
A função membro relata o evento de retorno de chamada erase_event
. Em seguida, ela copia o caractere de preenchimento, o ponteiro de ligação e as informações de formatação de right
para *this
. Antes de alterar a máscara de exceção, ela relata o evento de retorno de chamada copyfmt_event
. Se, após a cópia estar concluída, state&exceptions
for diferente de zero, a função chamará clear
efetivamente com o argumento rdstate
. Ele retorna *this
.
Exemplo
// basic_ios_copyfmt.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ofstream x( "test.txt" );
int i = 10;
x << showpos;
cout << i << endl;
cout.copyfmt( x );
cout << i << endl;
}
basic_ios::eof
Indica se o final de um fluxo foi atingido.
bool eof() const;
Valor de retorno
true
se o fim do fluxo tiver sido atingido, false
caso contrário.
Comentários
A função membro retorna true
se rdstate
& eofbit
for diferente de zero. Para obter mais informações sobre eofbit
o , consulte ios_base::iostate
.
Exemplo
// basic_ios_eof.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
int main( int argc, char* argv[] )
{
fstream fs;
int n = 1;
fs.open( "basic_ios_eof.txt" ); // an empty file
cout << boolalpha
cout << fs.eof() << endl;
fs >> n; // Read the char in the file
cout << fs.eof() << endl;
}
basic_ios::exceptions
Indica quais exceções serão lançadas pelo fluxo.
iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);
Parâmetros
Newexcept
Os sinalizadores que você deseja que gerem uma exceção.
Valor de retorno
Os sinalizadores atualmente especificados para gerar uma exceção para o fluxo.
Comentários
A primeira função membro retorna a máscara de exceção armazenada. A segunda função membro armazena _Except
na máscara de exceção e retorna o valor armazenado anterior dela. Armazenar uma nova máscara de exceção pode gerar uma exceção assim como a chamada clear
(rdstate
).
Exemplo
// basic_ios_exceptions.cpp
// compile with: /EHsc /GR
#include <iostream>
int main( )
{
using namespace std;
cout << cout.exceptions( ) << endl;
cout.exceptions( ios::eofbit );
cout << cout.exceptions( ) << endl;
try
{
cout.clear( ios::eofbit ); // Force eofbit on
}
catch ( exception &e )
{
cout.clear( );
cout << "Caught the exception." << endl;
cout << "Exception class: " << typeid(e).name() << endl;
cout << "Exception description: " << e.what() << endl;
}
}
0
1
Caught the exception.
Exception class: class std::ios_base::failure
Exception description: ios_base::eofbit set
basic_ios::fail
Indica falha ao extrair um campo válido de um fluxo.
bool fail() const;
Valor de retorno
true
se rdstate & (badbit|failbit)
for diferente de zero; caso contrário false
.
Para obter mais informações sobre failbit
o , consulte ios_base::iostate
.
Exemplo
// basic_ios_fail.cpp
// compile with: /EHsc
#include <iostream>
int main( void )
{
using namespace std;
bool b = cout.fail( );
cout << boolalpha;
cout << b << endl;
}
basic_ios::fill
Especifica ou retorna o caractere que será usado quando o texto não for tão grande quanto o fluxo.
char_type fill() const;
char_type fill(char_type Char);
Parâmetros
Char
O caractere que você deseja usar como caractere de preenchimento.
Valor de retorno
O caractere de preenchimento atual.
Comentários
A primeira função membro retorna o caractere de preenchimento armazenado. A segunda função membro armazena Char
no caractere de preenchimento e retorna seu valor armazenado anterior.
Exemplo
// basic_ios_fill.cpp
// compile with: /EHsc
#include <iostream>
#include <iomanip>
int main( )
{
using namespace std;
cout << setw( 5 ) << 'a' << endl;
cout.fill( 'x' );
cout << setw( 5 ) << 'a' << endl;
cout << cout.fill( ) << endl;
}
a
xxxxa
x
basic_ios::good
Indica que o fluxo está em boas condições.
bool good() const;
Valor de retorno
true
se rdstate == goodbit
(nenhum sinalizador de estado está definido), caso contrário, false
.
Para obter mais informações sobre goodbit
o , consulte ios_base::iostate
.
Exemplo
Confira basic_ios::bad
para ver um exemplo de como usar good
.
basic_ios::imbue
Altera a localidade.
locale imbue(const locale& Loc);
Parâmetros
Loc
Uma cadeia de caracteres de localidade.
Valor de retorno
A localidade anterior.
Comentários
Se rdbuf
não for um ponteiro NULL
, a função membro chamará
rdbuf-> pubimbue(_ Loc)
Em qualquer caso, retorna ios_base::imbue(_ Loc)
.
Para obter mais informações, consulte pubimbue
e ios_base::imbue
.
Exemplo
// basic_ios_imbue.cpp
// compile with: /EHsc
#include <iostream>
#include <locale>
int main( )
{
using namespace std;
cout.imbue( locale( "french_france" ) );
double x = 1234567.123456;
cout << x << endl;
}
basic_ios::init
Chamado por construtores basic_ios
.
void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);
Parâmetros
_Sb
Buffer padrão para armazenar elementos de entrada ou saída.
_Isstd
Especifica se esse é um fluxo padrão.
Comentários
A função membro armazena valores em todos os objetos membro, de modo que:
rdbuf
retorna_Sb
.tie
retorna um ponteiroNULL
.rdstate
retornarágoodbit
se_Sb
não for zero; caso contrário, retornarábadbit
.exceptions
retornagoodbit
.flags
retornaskipws | dec
. Para obter mais informações, consulteskipws
edec
.width
retorna 0.precision
retorna 6.fill
retorna o caractere de espaço.getloc
retornalocale::classic
.iword
retorna zero epword
retorna um ponteiroNULL
para todos os valores de argumento.
basic_ios::int_type
Um sinônimo de traits_type::int_type
.
typedef typename traits_type::int_type int_type;
basic_ios::move
Move todos os valores, exceto o ponteiro para o buffer de fluxo, do parâmetro para o objeto atual.
void move(basic_ios&& right);
Parâmetros
right
O objeto ios_base
do qual mover valores.
Comentários
A função membro protegida move todos os valores armazenados em right
para *this
, exceto o stream buffer pointer
armazenado, que permanece inalterado em right
e definido como um ponteiro NULL
em *this
. O tie pointer
armazenado é definido como um ponteiro NULL
em right
.
basic_ios::narrow
Localiza o char equivalente para um determinado char_type
.
char narrow(char_type Char, char Default = '\0') const;
Parâmetros
Char
O char
a ser convertido.
Default
O char
que você deseja que seja retornado se nenhum equivalente for encontrado.
Valor de retorno
O equivalente char
para um determinado char_type
.
Comentários
A função membro retorna use_facet<ctype<E>>(getloc()).narrow(Char, Default)
.
Para obter mais informações, consulte use_facet
e getloc
.
Exemplo
// basic_ios_narrow.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>
int main( )
{
using namespace std;
wchar_t *x = L"test";
char y[10];
cout << x[0] << endl;
wcout << x << endl;
y[0] = wcout.narrow( x[0] );
cout << y[0] << endl;
}
basic_ios::off_type
Um sinônimo de traits_type::off_type
.
typedef typename traits_type::off_type off_type;
basic_ios::operator void *
Indica se o fluxo ainda é válido.
operator void *() const;
Valor de retorno
O operador retorna um ponteiro NULL
somente se fail
.
Exemplo
// basic_ios_opgood.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << (bool)(&cout != 0) << endl; // Stream is still good
}
1
basic_ios::operator!
Indica se o fluxo não é inválido.
bool operator!() const;
Valor de retorno
Retorna o mesmo que a chamada a basic_ios::fail
Exemplo
// basic_ios_opbad.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << !cout << endl; // Stream is not bad
}
0
basic_ios::operator bool
Permite o uso de um objeto basic_ios
como um bool
. Conversão de tipo automática é desabilitada para evitar efeitos colaterais comuns não intencionais.
explicit operator bool() const;
Comentários
Retorna true
se o fluxo não tem erros; caso contrário, false
.
basic_ios::pos_type
Um sinônimo de traits_type::pos_type
.
typedef typename traits_type::pos_type pos_type;
basic_ios::rdbuf
Encaminha o fluxo para um buffer especificado.
basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);
Parâmetros
_Sb
Um fluxo.
Comentários
A primeira função membro retorna o ponteiro de buffer de fluxo armazenado.
A segunda função membro armazena _Sb
no ponteiro de buffer de fluxo armazenadas e retorna o valor armazenado anteriormente.
Exemplo
// basic_ios_rdbuf.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ofstream file( "rdbuf.txt" );
streambuf *x = cout.rdbuf( file.rdbuf( ) );
cout << "test" << endl; // Goes to file
cout.rdbuf(x);
cout << "test2" << endl;
}
test2
basic_ios::rdstate
Lê o estado de erro do fluxo.
iostate rdstate() const;
Valor de retorno
As informações de estado de fluxo armazenadas.
Exemplo
// basic_ios_rdstate.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
void TestFlags( ios& x )
{
cout << ( x.rdstate( ) & ios::badbit ) << endl;
cout << ( x.rdstate( ) & ios::failbit ) << endl;
cout << ( x.rdstate( ) & ios::eofbit ) << endl;
cout << endl;
}
int main( )
{
fstream x( "c:\test.txt", ios::out );
x.clear( );
TestFlags( x );
x.clear( ios::badbit | ios::failbit | ios::eofbit );
TestFlags( x );
}
0
0
0
4
2
1
basic_ios::setstate
Define os sinalizadores de erro de fluxo especificados (atualmente, os sinalizadores de estado de erro de fluxo definidos permanecem inalterados):
flag | Descrição |
---|---|
goodbit |
Nenhum erro |
badbit |
Erro irrecuperável |
failbit |
Falha na operação de E/S, como um erro de formatação ou extração |
eofbit |
O fluxo chegou ao final do arquivo |
void setstate(iostate _State);
Parâmetros
_State
Sinalizadores adicionais a serem definidos.
Comentários
A função membro essencialmente chama clear(_ state | rdstate)
.
Para obter mais informações, consulte clear
e rdstate
.
Exemplo
// basic_ios_setstate.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
using namespace std;
int main( )
{
bool b = cout.bad( );
cout << b << endl; // Good
cout.clear( ios::badbit );
b = cout.bad( );
// cout.clear( );
cout << b << endl; // Is bad, good
b = cout.fail( );
cout << b << endl; // Not failed
cout.setstate( ios::failbit );
b = cout.fail( );
cout.clear( );
cout << b << endl; // Is failed, good
return 0;
}
0
1
basic_ios::set_rdbuf
Atribui um buffer de fluxo para ser o buffer de leitura para esse objeto de fluxo.
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)
Parâmetros
strbuf
O buffer de fluxo para se tornar o buffer de leitura.
Comentários
A função membro protegida armazenará strbuf
no ponteiro de buffer de fluxo. Ela não chama clear
.
basic_ios::tie
Garante que um fluxo seja processado antes de outro.
basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);
Parâmetros
str
Um fluxo.
Valor de retorno
A primeira função membro retorna o ponteiro de ligação armazenado. A segunda função membro armazena str
no ponteiro de ligação e retorna seu valor armazenado anterior.
Comentários
tie
faz dois fluxos serem sincronizados de modo que operações em um fluxo ocorram depois da conclusão das operações no outro fluxo.
Exemplo
Neste exemplo, ao vincular cin
a cout
, garante-se que a cadeia de caracteres Enter a number:
vá para o console antes de o número em si ser extraído do cin
. Isso elimina a possibilidade de que a cadeia de caracteres "Digite um número:" ainda esteja no buffer quando o número for lido, para termos certeza de que o usuário de fato tem um prompt para responder. Por padrão, cin
e cout
são ligados.
#include <ios>
#include <iostream>
int main( )
{
using namespace std;
int i;
cin.tie( &cout );
cout << "Enter a number:";
cin >> i;
}
basic_ios::traits_type
Um sinônimo para o parâmetro de modelo Traits
.
typedef Traits traits_type;
basic_ios::widen
Localiza o char_type
equivalente para um determinado char
.
char_type widen(char Char) const;
Parâmetros
Char
O caractere a ser convertido.
Valor de retorno
Localiza o char_type
equivalente para um determinado char
.
Comentários
A função membro retorna use_facet<ctype<E>>(getloc).widen(Char)
.
Para obter mais informações, consulte use_facet
e getloc
.
Exemplo
// basic_ios_widen.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>
int main( )
{
using namespace std;
char *z = "Hello";
wchar_t y[2] = {0,0};
cout << z[0] << endl;
y[0] = wcout.widen( z[0] );
wcout << &y[0] << endl;
}
basic_ios::swap
Troca os valores nesse objeto basic_ios
por aqueles de outro objeto basic_ios
. Porém, os ponteiros para os buffers de fluxo não são trocados.
void swap(basic_ios&& right);
Parâmetros
right
O objeto basic_ios
usado para trocar valores.
Comentários
A função membro protegida troca todos os valores armazenados em right
por *this
, exceto o stream buffer pointer
armazenado.
Confira também
Acesso Thread-Safe na Biblioteca Padrão C++
Programação iostream
Convenções iostreams