basic_ostream, classe
Ce modèle de classe décrit un objet qui contrôle l’insertion d’éléments et d’objets encodés dans une mémoire tampon de flux avec des éléments de type Elem
, également appelés char_type, dont les caractéristiques de caractère sont déterminées par la classe Tr
, également appelées traits_type.
Syntaxe
template <class Elem, class Tr = char_traits<Elem>>
class basic_ostream : virtual public basic_ios<Elem, Tr>
Paramètres
Elem
char_type
.
Tr
Le caractère traits_type
.
Notes
La plupart des fonctions membres surchargées << sont des fonctions de sortie mises en forme. Elles suivent le modèle :
iostate state = goodbit;
const sentry ok(*this);
if (ok)
{try
{<convert and insert elements
accumulate flags in state> }
catch (...)
{try
{setstate(badbit);
}
catch (...)
{}
if ((exceptions()& badbit) != 0)
throw; }}
width(0);
// Except for operator<<(Elem)
setstate(state);
return (*this);
Deux autres fonctions membres sont des fonctions de sortie non mises en forme. Elles suivent le modèle :
iostate state = goodbit;
const sentry ok(*this);
if (!ok)
state |= badbit;
else
{try
{<obtain and insert elements
accumulate flags in state> }
catch (...)
{try
{setstate(badbit);
}
catch (...)
{}
if ((exceptions()& badbit) != 0)
throw; }}
setstate(state);
return (*this);
Les deux groupes de fonctions appellent setstate(badbit) s’ils rencontrent un échec lors de l’insertion d’éléments.
Objet de classe basic_istream<Elem, Tr> stocke uniquement un objet de base public virtuel de classe basic_ios<Elem, Tr.>
Exemple
Pour en savoir plus sur les flux de sortie, consultez l’exemple relatif à basic_ofstream, classe.
Constructeurs
Constructeur | Description |
---|---|
basic_ostream | Construit un objet basic_ostream . |
Fonctions Membre
Fonction membre | Description |
---|---|
flush | Vide la mémoire tampon. |
put | Place un caractère dans un flux. |
seekp | Réinitialise la position dans le flux de sortie. |
sentry | La classe imbriquée décrit un objet dont la déclaration structure les fonctions de sortie mise en forme et les fonctions de sortie non mise en forme. |
swap | Échange les valeurs de cet objet basic_ostream avec celles de l'objet basic_ostream fourni. |
tellp | Indique la position dans le flux de sortie. |
write | Place des caractères dans un flux. |
Opérateurs
Opérateur | Description |
---|---|
operator= | Affecte la valeur du paramètre d'objet basic_ostream fourni à cet objet. |
operator<< | Écrit dans le flux. |
Spécifications
Header :<ostream>
Espace de noms : std
basic_ostream ::basic_ostream
Construit un objet basic_ostream
.
explicit basic_ostream(
basic_streambuf<Elem, Tr>* strbuf,
bool _Isstd = false);
basic_ostream(basic_ostream&& right);
Paramètres
strbuf
Objet de type basic_streambuf.
_Isstd
true
s’il s’agit d’un flux standard ; sinon, false
.
right
Référence rvalue à un objet de type basic_ostream
.
Notes
Le premier constructeur initialise la classe de base en appelant init(strbuf
). Le deuxième constructeur initialise la classe de base en appelant basic_ios::move(right)
.
Exemple
Pour en savoir plus sur les flux de sortie, consultez l’exemple relatif à basic_ofstream::basic_ofstream.
basic_ostream ::flush
Vide la mémoire tampon.
basic_ostream<Elem, Tr>& flush();
Valeur de retour
Référence à l’objet basic_ostream.
Notes
Si rdbuf n’est pas un pointeur Null, la fonction appelle rdbuf-pubsync>. Si le résultat est -1, la fonction appelle setstate(badbit). Elle retourne *this.
Exemple
// basic_ostream_flush.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << "test";
cout.flush();
}
test
basic_ostream::operator<<
Écrit dans le flux.
basic_ostream<Elem, Tr>& operator<<(
basic_ostream<Elem, Tr>& (* Pfn)(basic_ostream<Elem, Tr>&));
basic_ostream<Elem, Tr>& operator<<(
ios_base& (* Pfn)(ios_base&));
basic_ostream<Elem, Tr>& operator<<(
basic_ios<Elem, Tr>& (* Pfn)(basic_ios<Elem, Tr>&));
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
basic_ostream<Elem, Tr>& operator<<(bool val);
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int __w64 val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64 val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long __w64 val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
basic_ostream<Elem, Tr>& operator<<(const void* val);
Paramètres
Pfn
Pointeur de fonction.
strbuf
Pointeur vers un objet stream_buf
.
val
Élément à écrire dans le flux.
Valeur de retour
Référence à l’objet basic_ostream.
Notes
L’en-tête <ostream définit également plusieurs opérateurs d’insertion globaux> . Pour plus d’informations, consultez operator<<.
La première fonction membre garantit qu’une expression du formulaire ostr << endl
appelle endl(ostr), puis retourne *this. Les deuxième et troisième fonctions garantissent que d’autres manipulateurs, comme hex, se comportent de la même façon. Les fonctions restantes sont toutes les fonctions de sortie mises en forme.
La fonction
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
extrait des éléments de strbuf, si strbuf n’est pas un pointeur Null et les insère. L’extraction s’arrête à la fin du fichier ou si une extraction lève une exception (qui est à nouveau levée). Elle s’arrête également, sans extraire l’élément en question, si une insertion échoue. Si la fonction n’insère aucun élément ou si une extraction lève une exception, la fonction appelle setstate(failbit). Dans tous les cas, la fonction retourne *this.
La fonction
basic_ostream<Elem, Tr>& operator<<(bool val);
convertit _Val
en champ booléen et l’insère en appelant use_facet<num_put<Elem, OutIt(
>getloc). put(OutIt(rdbuf), *this, getloc
val). Ici, OutIt
est défini comme ostreambuf_iterator<Elem, Tr.> La fonction retourne *this.
Les fonctions
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64 val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(const void* val);
chaque valeur de conversion en champ numérique et l’insère en appelant use_facet<num_put<Elem, OutIt>(getloc
). put(OutIt(rdbuf
), *this, getloc
val). Ici, OutIt est défini comme ostreambuf_iterator<Elem, Tr>. La fonction retourne *this.
Les fonctions
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
chaque val de conversion en champ numérique et l’insère en appelant use_facet<num_put<Elem, OutIt>(getloc
). put(OutIt(rdbuf
), *this, getloc
val). Ici, OutIt est défini comme ostreambuf_iterator<Elem, Tr>. La fonction retourne *this.
Exemple
// basic_ostream_op_write.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>
using namespace std;
ios_base& hex2( ios_base& ib )
{
ib.unsetf( ios_base::dec );
ib.setf( ios_base::hex );
return ib;
}
basic_ostream<char, char_traits<char> >& somefunc(basic_ostream<char, char_traits<char> > &i)
{
if (i == cout)
{
i << "i is cout" << endl;
}
return i;
}
class CTxtStreambuf : public basic_streambuf< char, char_traits< char > >
{
public:
CTxtStreambuf(char *_pszText)
{
pszText = _pszText;
setg(pszText, pszText, pszText + strlen(pszText));
};
char *pszText;
};
int main()
{
cout << somefunc;
cout << 21 << endl;
hex2(cout);
cout << 21 << endl;
CTxtStreambuf f("text in streambuf");
cout << &f << endl;
}
basic_ostream ::operator=
Attribue la valeur du paramètre d’objet basic_ostream
fourni à cet objet.
basic_ostream& operator=(basic_ostream&& right);
Paramètres
right
Référence rvalue
à un objet basic_ostream
.
Notes
L’opérateur membre appelle swap (right)
.
basic_ostream ::p ut
Place un caractère dans un flux.
basic_ostream<Elem, Tr>& put(char_type _Ch);
Paramètres
_Ch
Un caractère.
Valeur de retour
Référence à l’objet basic_ostream.
Notes
La fonction de sortie non mise en forme insère l’élément _Ch. Elle retourne *this.
Exemple
// basic_ostream_put.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout.put( 'v' );
cout << endl;
wcout.put( L'l' );
}
v
l
basic_ostream ::seekp
Réinitialise la position dans le flux de sortie.
basic_ostream<Elem, Tr>& seekp(pos_type _Pos);
basic_ostream<Elem, Tr>& seekp(off_type _Off, ios_base::seekdir _Way);
Paramètres
_Pos
Position dans le flux.
_De
Décalage relatif à _Way.
_Manière
Une des énumérations ios_base::seekdir.
Valeur de retour
Référence à l’objet basic_ostream.
Notes
En cas d’échecfalse
, la première fonction membre appelle newpos = rdbuf-> pubseekpos(_Pos), pour un pos_type
objet newpos
temporaire . Si fail
la valeur est false, la deuxième fonction appelle newpos = rdbuf- >pubseekoff(_Off, _Way). Dans les deux cas, si (off_type
)newpos == (off_type
)(-1) (l’opération de positionnement échoue), la fonction appelle istr.setstate(failbit). Les deux fonctions retournent *this.
Exemple
// basic_ostream_seekp.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main()
{
using namespace std;
ofstream x("basic_ostream_seekp.txt");
streamoff i = x.tellp();
cout << i << endl;
x << "testing";
i = x.tellp();
cout << i << endl;
x.seekp(2); // Put char in third char position in file
x << " ";
x.seekp(2, ios::end); // Put char two after end of file
x << "z";
}
0
7
basic_ostream ::sentry
La classe imbriquée décrit un objet dont la déclaration structure les fonctions de sortie mise en forme et les fonctions de sortie non mise en forme.
class sentry { public : explicit sentry(basic_ostream<Elem, Tr>&_Ostr) ; operator bool() const ; ~sentry() ; } ;
Notes
La classe imbriquée décrit un objet dont la déclaration structure les fonctions de sortie mise en forme et les fonctions de sortie non mise en forme. Si ostr.bon est true
et ostr.tie n’est pas un pointeur Null, le constructeur appelle ostr.tie-flush>. Le constructeur stocke ensuite la valeur retournée par ostr.good
.status
Un appel ultérieur pour operator bool
remettre cette valeur stockée.
Si uncaught_exception
les retours false
et indicateurs & unitbuf ne sont pas zéro, le destructeur appelle le vidage.
basic_ostream ::swap
Échange les valeurs de cet objet basic_ostream
avec celles du basic_ostream
fourni.
void swap(basic_ostream& right);
Paramètres
right
Référence à un objet basic_ostream
.
Notes
La fonction membre appelle basic_ios ::swap(right)
pour échanger le contenu de cet objet pour le contenu du droit.
basic_ostream ::tellp
Signale la position dans le flux de sortie.
pos_type tellp();
Valeur de retour
Position dans le flux de sortie.
Notes
En cas d’échecfalse
, la fonction membre retourne rdbuf- >pubseekoff(0, cur
, in). Sinon, elle retourne pos_type
(-1).
Exemple
Consultez seekp pour obtenir un exemple d’utilisation de tellp
.
basic_ostream ::write
Place des caractères dans un flux.
basic_ostream<Elem, Tr>& write(const char_type* str, streamsize count);
Paramètres
count
Nombre de caractères à placer dans le flux.
str
Caractères à placer dans le flux.
Valeur de retour
Référence à l’objet basic_ostream.
Notes
La fonction de sortie non mise en forme insère la séquence d’éléments de nombre commençant à str.
Exemple
Consultez streamsize pour obtenir un exemple d’utilisation de write
.
Voir aussi
Sécurité des threads dans la bibliothèque C++ Standard
iostream, programmation
iostreams, conventions