La classe basic_ios
Le modèle de classe décrit les fonctions de stockage et de membre communes aux flux d’entrée (du modèle basic_istream
de classe) et aux flux de sortie (du modèle basic_ostream
de classe) qui dépendent des paramètres du modèle. (La classe ios_base
décrit ce qui est courant et non dépendant des paramètres du modèle.) Un objet de classe basic_ios<class Elem, class Traits>
permet de contrôler un flux avec des éléments de type Elem
, dont les caractéristiques de caractère sont déterminées par la classe Traits
.
Syntaxe
template <class Elem, class Traits>
class basic_ios : public ios_base
Paramètres
Elem
Type de caractère.
Traits
Type fournissant des informations sur le type de caractère, valeur par défaut char_traits < Elem >
.
Notes
Objet de classe basic_ios<class Elem, class Traits>
stocke :
Pointeur de liaison vers un objet de type
basic_istream<Elem, Traits>
.Pointeur de mémoire tampon de flux vers un objet de type
basic_streambuf<Elem, Traits >
.Diffusez des informations d’état dans un objet de base de type
ios_base
.Un caractère de remplissage dans un objet de type
char_type
.
Pour plus d’informations, consultez basic_istream
et basic_streambuf
.
Constructeurs
Constructeur | Description |
---|---|
basic_ios |
Construit la classe basic_ios . |
Typedefs
Nom de type | Description |
---|---|
char_type |
Synonyme pour le paramètre du modèle Elem . |
int_type |
Synonyme de Traits::int_type . |
off_type |
Synonyme de Traits::off_type . |
pos_type |
Synonyme de Traits::pos_type . |
traits_type |
Synonyme pour le paramètre du modèle Traits . |
Fonctions Membre
Fonction membre | Description |
---|---|
bad |
Indique une perte d'intégrité de la mémoire tampon du flux. |
clear |
Efface tous les indicateurs d'erreur. |
copyfmt |
Copie les indicateurs d'un flux vers un autre. |
eof |
Indique si la fin d'un flux a été atteinte. |
exceptions |
Indique les exceptions qui seront levées par le flux. |
fail |
Indique l'échec de l'extraction d'un champ valide dans un flux. |
fill |
Spécifie ou retourne le caractère qui sera utilisé lorsque le texte n’est pas aussi large que le flux. |
good |
Indique que le flux est en bon état. |
imbue |
Change les paramètres régionaux. |
init |
Appelé par les constructeurs basic_ios . |
move |
Déplace toutes les valeurs, sauf le pointeur vers la mémoire tampon du flux, du paramètre vers l'objet actuel. |
narrow |
Trouve le caractère équivalent à un type char_type donné. |
rdbuf |
Dirige le flux vers la mémoire tampon spécifiée. |
rdstate |
Lit l'état des bits pour les indicateurs. |
set_rdbuf |
Affecte une mémoire tampon de flux comme mémoire tampon de lecture pour cet objet de flux. |
setstate |
Définit des indicateurs supplémentaires. |
swap |
Échange les valeurs de cet objet basic_ios avec celles d'un autre objet basic_ios . Les pointeurs vers les mémoires tampons de flux ne sont pas échangés. |
tie |
Garantit qu'un flux est traité avant un autre flux. |
widen |
Trouve le type char_type équivalent à un caractère donné. |
Opérateurs
Opérateur | Description |
---|---|
explicit operator bool |
Permet l'utilisation d'un objet basic_ios comme bool . La conversion de type automatique est désactivée pour éviter des effets secondaires involontaires courants. |
operator void * |
Indique si le flux est toujours en bon état. |
operator! |
Indique si le flux n’est pas incorrect. |
Spécifications
En-tête : <ios>
Espace de noms : std
basic_ios::bad
Indique une perte d’intégrité de la mémoire tampon de flux
bool bad() const;
Valeur de retour
true
si rdstate & badbit
est différent de zéro ; sinon, false
.
Pour plus d’informations sur badbit
, consultez ios_base::iostate
.
Exemple
// 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
Construit la classe basic_ios
.
explicit basic_ios(basic_streambuf<Elem, Traits>* sb);
basic_ios();
Paramètres
sb
Mémoire tampon standard pour stocker les éléments d’entrée ou de sortie.
Notes
Le premier constructeur initialise ses objets membres en appelant init(_ Sb)
. Le deuxième constructeur (protégé) laisse ses objets membres non initialisés. Un appel ultérieur pour init
initialiser l’objet avant de pouvoir être détruit en toute sécurité.
basic_ios::char_type
Synonyme pour le paramètre du modèle Elem
.
typedef Elem char_type;
basic_ios::clear
Efface tous les indicateurs d'erreur.
void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);
Paramètres
state
(Facultatif) Indicateurs que vous souhaitez définir après avoir désactivé tous les indicateurs. La valeur par défaut est goodbit
.
reraise
(Facultatif) Spécifie si l’exception doit être re-levée. false
La valeur par défaut est (ne déclenche pas à nouveau l’exception).
Notes
Les indicateurs sont goodbit
, , failbit
eofbit
et badbit
. Tester ces indicateurs avec good
, bad
, eof
et fail
La fonction membre remplace les informations d'état de flux stockées par :
state | (rdbuf != 0 goodbit : badbit)
S’il state&exceptions
est différent de zéro, il lève ensuite un objet de classe failure
.
Pour plus d’informations, consultez rdbuf
et exceptions
.
Exemple
Consultez rdstate
et getline
pour obtenir des exemples à l’aide clear
de .
basic_ios::copyfmt
Copie les indicateurs d'un flux vers un autre.
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);
Paramètres
right
Flux dont vous voulez copier les indicateurs.
Valeur de retour
Objet this
du flux vers lequel vous copiez les indicateurs.
Notes
La fonction membre signale l’événement erase_event
de rappel . Il copie ensuite à partir du right
*this
caractère de remplissage, du pointeur de liaison et des informations de mise en forme. Avant de modifier le masque d’exception, il signale l’événement copyfmt_event
de rappel . Si une fois la copie terminée, state&exceptions
n’est pas différente de zéro, la fonction appelle clear
efficacement avec l’argument rdstate
. Elle retourne *this
.
Exemple
// 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
Indique si la fin d'un flux a été atteinte.
bool eof() const;
Valeur de retour
true
si la fin du flux a été atteinte, false
dans le cas contraire.
Notes
La fonction membre retourne true
si rdstate
& eofbit
elle n’est pas nulle. Pour plus d’informations sur eofbit
, consultez ios_base::iostate
.
Exemple
// 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
Indique les exceptions qui seront levées par le flux.
iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);
Paramètres
Newexcept
Indicateurs pour lesquels vous voulez lever une exception.
Valeur de retour
Indicateurs actuellement spécifiés pour lever une exception pour le flux.
Notes
La première fonction membre retourne le masque d’exception stocké. La deuxième fonction membre stocke _Except
dans le masque d’exception et retourne sa valeur stockée précédente. Le stockage d’un nouveau masque d’exception peut lever une exception comme l’appel clear
( rdstate
).
Exemple
// 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
Indique l'échec de l'extraction d'un champ valide dans un flux.
bool fail() const;
Valeur de retour
true
s’il rdstate & (badbit|failbit)
n’est pas différent de zéro, sinon false
.
Pour plus d’informations sur failbit
, consultez ios_base::iostate
.
Exemple
// 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
Spécifie ou retourne le caractère qui sera utilisé lorsque le texte n’est pas aussi large que le flux.
char_type fill() const;
char_type fill(char_type Char);
Paramètres
Char
Caractère souhaité comme caractère de remplissage.
Valeur de retour
Caractère de remplissage actuel.
Notes
La première fonction membre retourne le caractère de remplissage stocké. La deuxième fonction membre stocke Char
dans le caractère de remplissage et retourne sa précédente valeur stockée.
Exemple
// 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
Indique que le flux est en bon état.
bool good() const;
Valeur de retour
true
si rdstate == goodbit
(aucun indicateur d’état n’est défini), sinon. false
Pour plus d’informations sur goodbit
, consultez ios_base::iostate
.
Exemple
Consultez basic_ios::bad
un exemple d’utilisation good
.
basic_ios::imbue
Change les paramètres régionaux.
locale imbue(const locale& Loc);
Paramètres
Loc
Chaîne de paramètres régionaux.
Valeur de retour
Paramètres régionaux précédents.
Notes
Si rdbuf
ce n’est pas un NULL
pointeur, la fonction membre appelle
rdbuf-> pubimbue(_ Loc)
Dans tous les cas, elle retourne ios_base::imbue(_ Loc)
.
Pour plus d’informations, consultez pubimbue
et ios_base::imbue
.
Exemple
// 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
Appelé par les constructeurs basic_ios
.
void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);
Paramètres
_Sb
Mémoire tampon standard pour stocker les éléments d’entrée ou de sortie.
_Isstd
Spécifie s’il s’agit d’un flux standard.
Notes
La fonction membre stocke les valeurs de tous les objets membres, afin que :
rdbuf
retourne_Sb
.tie
retourne unNULL
pointeur.rdstate
retournegoodbit
s’il_Sb
n’est pas différent de zéro ; sinon, il retournebadbit
.exceptions
retournegoodbit
.flags
retourneskipws | dec
. Pour plus d’informations, consultezskipws
etdec
.width
retourne 0.precision
retourne 6.fill
retourne le caractère d’espace.getloc
retournelocale::classic
.iword
retourne zéro etpword
retourne unNULL
pointeur pour toutes les valeurs d’argument.
basic_ios::int_type
Synonyme de traits_type::int_type
.
typedef typename traits_type::int_type int_type;
basic_ios::move
Déplace toutes les valeurs, sauf le pointeur vers la mémoire tampon du flux, du paramètre vers l'objet actuel.
void move(basic_ios&& right);
Paramètres
right
Objet ios_base
à partir duquel déplacer les valeurs.
Notes
La fonction membre protégée déplace toutes les valeurs stockées à right
l’exception *this
du stocké stream buffer pointer
, qui n’est pas modifié et défini sur right
un NULL
pointeur dans *this
. Le stockage tie pointer
est défini sur un NULL
pointeur dans right
.
basic_ios::narrow
Trouve le caractère équivalent à un type char_type
donné.
char narrow(char_type Char, char Default = '\0') const;
Paramètres
Char
char
à convertir.
Default
char
à retourné si aucun équivalent n’est trouvé.
Valeur de retour
char
équivalent à un char_type
donné.
Notes
La fonction membre retourne use_facet<ctype<E>>(getloc()).narrow(Char, Default)
.
Pour plus d’informations, consultez use_facet
et getloc
.
Exemple
// 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
Synonyme de traits_type::off_type
.
typedef typename traits_type::off_type off_type;
basic_ios::operator void *
Indique si le flux est toujours en bon état.
operator void *() const;
Valeur de retour
L’opérateur retourne un NULL
pointeur uniquement si fail
.
Exemple
// 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!
Indique si le flux n’est pas incorrect.
bool operator!() const;
Valeur de retour
Retourne la même chose que l’appel basic_ios::fail
Exemple
// 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
Permet l'utilisation d'un objet basic_ios
comme bool
. La conversion de type automatique est désactivée pour éviter des effets secondaires involontaires courants.
explicit operator bool() const;
Notes
Retourne true
si le flux n’a aucune erreur ; sinon false
.
basic_ios::pos_type
Synonyme de traits_type::pos_type
.
typedef typename traits_type::pos_type pos_type;
basic_ios::rdbuf
Dirige le flux vers la mémoire tampon spécifiée.
basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);
Paramètres
_Sb
Un flux.
Notes
La première fonction membre retourne le pointeur de mémoire tampon de flux stocké.
La deuxième fonction membre stocke _Sb
dans le pointeur de mémoire tampon de flux stocké et retourne la valeur précédemment stockée.
Exemple
// 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
Lit l’état d’erreur du flux.
iostate rdstate() const;
Valeur de retour
Informations de l’état de flux stocké.
Exemple
// 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
Définit les indicateurs d’erreur de flux spécifiés (les indicateurs d’état d’erreur de flux actuellement définis restent inchangés) :
flag | Description |
---|---|
goodbit |
Aucune erreur |
badbit |
Erreur irrécupérable |
failbit |
Échec de l’opération d’E/S, par exemple une erreur de mise en forme ou d’extraction |
eofbit |
Le flux a atteint la fin du fichier |
void setstate(iostate _State);
Paramètres
_State
Indicateurs supplémentaires à définir.
Notes
La fonction membre appelle clear(_ state | rdstate)
essentiellement .
Pour plus d’informations, consultez clear
et rdstate
.
Exemple
// 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
Affecte une mémoire tampon de flux comme mémoire tampon de lecture pour cet objet de flux.
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)
Paramètres
strbuf
Mémoire tampon de flux qui doit devenir la mémoire tampon de lecture.
Notes
La fonction membre protégée stocke strbuf
dans le pointeur de la mémoire tampon de flux. Il n’appelle clear
pas .
basic_ios::tie
Garantit qu'un flux est traité avant un autre flux.
basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);
Paramètres
str
Un flux.
Valeur de retour
La première fonction membre retourne le pointeur de lien stocké. La deuxième fonction membre stocke str
dans le pointeur de lien et retourne sa précédente valeur stockée.
Notes
tie
entraîne la synchronisation de deux flux, de sorte que les opérations sur un flux se produisent après la fin des opérations sur l’autre flux.
Exemple
Dans l’exemple suivant, en liant cin
cout
, il est garanti que la Enter a number:
chaîne passe à la console avant que le nombre lui-même soit extrait cin
de . Cela élimine la possibilité que la chaîne « Entrer un nombre : » reste assise dans la mémoire tampon lorsque le nombre est lu, de sorte que nous sommes certains que l’utilisateur a réellement une invite à répondre. Par défaut, cin
et cout
sont liés.
#include <ios>
#include <iostream>
int main( )
{
using namespace std;
int i;
cin.tie( &cout );
cout << "Enter a number:";
cin >> i;
}
basic_ios::traits_type
Synonyme pour le paramètre du modèle Traits
.
typedef Traits traits_type;
basic_ios::widen
Trouve le char_type
équivalent à un char
donné.
char_type widen(char Char) const;
Paramètres
Char
Caractère à convertir.
Valeur de retour
Trouve le char_type
équivalent à un char
donné.
Notes
La fonction membre retourne use_facet<ctype<E>>(getloc).widen(Char)
.
Pour plus d’informations, consultez use_facet
et getloc
.
Exemple
// 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
Échange les valeurs de cet objet basic_ios
avec celles d'un autre objet basic_ios
. Toutefois, les pointeurs vers les mémoires tampons de flux ne sont pas échangés.
void swap(basic_ios&& right);
Paramètres
right
Objet basic_ios
utilisé pour échanger des valeurs.
Notes
La fonction de membre protégée échange toutes les valeurs stockées dans right
avec *this
, sauf le stream buffer pointer
stocké.
Voir aussi
Sécurité des threads dans la bibliothèque C++ Standard
iostream
Programmation
iostreams
Conventions