Namespaces
Variants

std:: cout, std:: wcout

From cppreference.net
< cpp ‎ | io
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)