Namensräume
Varianten
Aktionen

std::cout, std::wcout

Von cppreference.com
< cpp‎ | io
 
 
 
 
Definiert in Header <iostream>
extern std::ostream cout;
(1)
extern std::wostream wcout;
(2)

Die globalen Objekte std::cout und std::wcout steuern die Ausgabe in einen Stream-Puffer von implementierungsabhängigem Typ (abgeleitet von std::streambuf), der mit dem Standard-C-Ausgabestrom stdout verbunden ist.

Es wird garantiert, dass diese Objekte während oder vor der ersten Konstruktion eines Objekts vom Typ std::ios_base::Init initialisiert werden und für die Verwendung in den Konstruktoren und Destruktoren von statischen Objekten mit geordneter Initialisierung verfügbar sind (solange <iostream> vor der Definition des Objekts inkludiert wird).

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

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

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

[bearbeiten] Hinweise

Das 'c' im Namen bezieht sich auf "character" (Zeichen) (stroustrup.com FAQ); cout bedeutet "character output" (Zeichenausgabe) und wcout bedeutet "wide character output" (Breitzeichenausgabe).

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

[bearbeiten] 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

[bearbeiten] Siehe auch

initialisiert Standard-Stream-Objekte
(public member class of std::ios_base) [bearbeiten]
schreibt in den Standard-C-Fehlerstrom stderr, unbuffered
(globales Objekt)[bearbeiten]
schreibt in den Standard-C-Fehlerstrom stderr
(globales Objekt)[bearbeiten]
Ausdruck vom Typ FILE*, der dem Eingabestrom zugeordnet ist
Ausdruck vom Typ FILE*, der dem Ausgabestrom zugeordnet ist
Ausdruck vom Typ FILE*, der dem Fehlerstrom zugeordnet ist
(Makrokonstante) [bearbeiten]