std:: cout, std:: wcout
|
Défini dans l'en-tête
<iostream>
|
||
|
extern
std::
ostream
cout
;
|
(1) | |
|
extern
std::
wostream
wcout
;
|
(2) | |
Les objets globaux
std::cout
et
std::wcout
contrôlent la sortie vers un tampon de flux de type défini par l'implémentation (dérivé de
std::streambuf
), associé au flux de sortie standard C
stdout
.
Ces objets sont garantis d'être initialisés pendant ou avant la première fois qu'un objet de type std::ios_base::Init est construit et sont disponibles pour utilisation dans les constructeurs et destructeurs d'objets statiques avec initialisation ordonnée (tant que <iostream> est inclus avant que l'objet soit défini).
À moins que std :: ios_base :: sync_with_stdio ( false ) n'ait été exécuté, il est sûr d'accéder simultanément à ces objets depuis plusieurs threads pour une sortie formatée et non formatée.
Selon la spécification de
std::cin
,
std::
cin
.
tie
(
)
retourne
&
std
::
cout
. Cela signifie que toute opération d'entrée sur
std::cin
exécute
std
::
cout
.
flush
(
)
(via le constructeur de
std::basic_istream::sentry
). De même,
std::
wcin
.
tie
(
)
retourne
&
std
::
wcout
.
Selon la spécification de
std::cerr
,
std::
cerr
.
tie
(
)
retourne
&
std
::
cout
. Cela signifie que toute opération de sortie sur
std::cerr
exécute
std
::
cout
.
flush
(
)
(via le constructeur de
std::basic_ostream::sentry
). De même,
std::
wcerr
.
tie
(
)
retourne
&
std
::
wcout
.
(depuis C++11)
Notes
Le 'c' dans le nom fait référence à "caractère" (
FAQ stroustrup.com
);
cout
signifie "sortie caractère" et
wcout
signifie "sortie caractère large".
Étant donné que
l'initialisation dynamique
des variables
templatées
n'est pas ordonnée, il n'est pas garanti que
std::cout
ait été initialisé dans un état utilisable avant le début de l'initialisation de ces variables, à moins qu'un objet de type
std::ios_base::Init
n'ait été construit.
Exemple
#include <iostream> struct Foo { int n; Foo() { std::cout << "static constructor\n"; } ~Foo() { std::cout << "static destructor\n"; } }; Foo f; // static object int main() { std::cout << "main function\n"; }
Sortie :
static constructor main function static destructor
Voir aussi
|
initialise les objets de flux standard
(classe membre publique de
std::ios_base
)
|
|
|
écrit dans le flux d'erreur C standard
stderr
, non tamponné
(objet global) |
|
|
écrit dans le flux d'erreur C standard
stderr
(objet global) |
|
|
expression de type
FILE
*
associée au flux d'entrée
expression de type FILE * associée au flux de sortie expression de type FILE * associée au flux de sortie d'erreur (constante macro) |