Namespaces
Variants

std:: cout, std:: wcout

From cppreference.net
< cpp ‎ | io
Definiert im Header <iostream>
extern std:: ostream cout ;
(1)
extern std:: wostream wcout ;
(2)

Die globalen Objekte std::cout und std::wcout steuern die Ausgabe an einen Streampuffer eines implementierungsdefinierten Typs (abgeleitet von std::streambuf ), der mit dem standardmäßigen C-Ausgabestream stdout assoziiert ist.

Diese Objekte sind garantiert während oder vor dem ersten Mal initialisiert, wenn ein Objekt vom Typ std::ios_base::Init konstruiert wird, und sind in den Konstruktoren und Destruktoren von statischen Objekten mit geordneter Initialisierung verfügbar (sofern <iostream> vor der Definition des Objekts eingebunden wird).

Sofern nicht std :: ios_base :: sync_with_stdio ( false ) aufgerufen wurde, ist es sicher, diese Objekte von mehreren Threads aus gleichzeitig für formatierte und unformatierte Ausgabe zu verwenden.

Gemäß der Spezifikation von std::cin gibt std:: cin . tie ( ) & std :: cout zurück. Dies bedeutet, dass jede Eingabeoperation auf std::cin std :: cout . flush ( ) ausführt (über den Konstruktor von std::basic_istream::sentry ). Ebenso gibt std:: wcin . tie ( ) & std :: wcout zurück.

Gemäß der Spezifikation von std::cerr gibt std:: cerr . tie ( ) & std :: cout zurück. Dies bedeutet, dass jede Ausgabeoperation auf std::cerr std :: cout . flush ( ) ausführt (über den Konstruktor von std::basic_ostream::sentry ). Ebenso gibt std:: wcerr . tie ( ) & std :: wcout zurück. (seit C++11)

Hinweise

Das 'c' im Namen steht für "Character" ( stroustrup.com FAQ ); cout bedeutet "Character Output" und wcout bedeutet "Wide Character Output".

Da die dynamische Initialisierung von templated Variablen ungeordnet ist, ist nicht garantiert, dass std::cout vor dem Beginn der Initialisierung solcher Variablen in einen verwendbaren Zustand initialisiert wurde, es sei denn, ein Objekt vom Typ std::ios_base::Init wurde konstruiert.

Beispiel

#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";
}

Ausgabe:

static constructor
main function
static destructor

Siehe auch

initialisiert Standard-Stream-Objekte
(öffentliche Mitgliedsklasse von std::ios_base )
schreibt in den Standard-C-Fehlerstrom stderr , ungepuffert
(globales Objekt)
schreibt in den Standard-C-Fehlerstrom stderr
(globales Objekt)
Ausdruck vom Typ FILE * assoziiert mit dem Eingabestrom
Ausdruck vom Typ FILE * assoziiert mit dem Ausgabestrom
Ausdruck vom Typ FILE * assoziiert mit dem Fehlerausgabestrom
(Makrokonstante)