From cppreference.com
Defined in header
externstd::ostreamcout; (1) externstd::wostreamwcout; (2) The global objects std::cout and std::wcout control output to a stream buffer of implementation-defined type (derived from
), associated with the standard C output stream
.
These objects are guaranteed to be initialized during or before the first time an object of type
is constructed and are available for use in the constructors and destructors of static objects with
(as long as
is included before the object is defined).
Unless std::ios_base::sync_with_stdio(false) has been issued, it is safe to concurrently access these objects from multiple threads for both formatted and unformatted output.
By specification of
, std::cin.tie() returns &std::cout. This means that any input operation on std::cin executes std::cout.flush() (via
's constructor). Similarly, std::wcin.tie() returns &std::wcout.
By specification of
, std::cerr.tie() returns &std::cout. This means that any output operation on std::cerr executes std::cout.flush() (via
's constructor). Similarly, std::wcerr.tie() returns &std::wcout. (since C++11)
Notes
The 'c' in the name refers to "character" (
); cout means "character output" and wcout means "wide character output".
Because
of
variables are unordered, it is not guaranteed that std::cout has been initialized to a usable state before the initialization of such variables begins, unless an object of type
has been constructed.
Example
Run this code
#include<iostream>structFoo{intn;Foo(){std::cout<<"static constructor\n";}~Foo(){std::cout<<"static destructor\n";}};Foof;// static objectintmain(){std::cout<<"main function\n";}Output:
static constructor main function static destructor See also
initializes standard stream objects
(public member class of std::ios_base)
writes to the standard C error stream
, unbuffered
(global object)
writes to the standard C error stream
(global object)
expression of type FILE* associated with the input stream
expression of type FILE* associated with the output stream
expression of type FILE* associated with the error output stream
(macro constant)