Partager via


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
traits_type du caractère.

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, getlocval). 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, getlocval). 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, getlocval). 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.

_Off
Décalage relatif à _Way.

_Façon
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 newpostemporaire. 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 retourne false et flags&unitbuf n’est 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