GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::cerr,std::wcerr(3) C++ Standard Libary std::cerr,std::wcerr(3)

std::cerr,std::wcerr - std::cerr,std::wcerr


Defined in header <iostream>
extern std::ostream cerr; (1)
extern std::wostream wcerr; (2)


The global objects std::cerr and std::wcerr control output to a stream buffer of
implementation-defined type (derived from std::streambuf and std::wstreambuf,
respectively), associated with the standard C error output stream stderr.


These objects are guaranteed to be initialized during or before the first time an
object of type std::ios_base::Init is constructed and are available for use in the
constructors and destructors of static objects with ordered initialization (as long
as <iostream> 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.


Once initialized, (std::cerr.flags() & unitbuf) != 0 (same for wcerr) meaning that
any output sent to these stream objects is immediately flushed to the OS (via
std::basic_ostream::sentry's destructor).


In addition, std::cerr.tie() returns &std::cout (same for wcerr and std::wcout),
meaning that any output operation on std::cerr first executes std::cout.flush() (via
std::basic_ostream::sentry's constructor) (since C++11).


The 'c' in the name refers to "character" (stroustrup.com FAQ); cerr means
"character error (stream)" and wcerr means "wide character error (stream)".


output to stderr via std::cerr flushes out the pending output on std::cout, while
output to stderr via std::clog does not.

// Run this code


#include <thread>
#include <iostream>
#include <chrono>
void f()
{
std::cout << "Output from thread...";
std::this_thread::sleep_for(std::chrono::seconds(2));
std::cout << "...thread calls flush()" << std::endl;
}


int main()
{
std::thread t1(f);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::clog << "This output from main is not tie()'d to cout\n";
std::cerr << "This output is tie()'d to cout\n";
t1.join();
}


This output from main is not tie()'d to cout
Output from thread...This output is tie()'d to cout
...thread calls flush()


Init initializes standard stream objects
(public member class of std::ios_base)
clog writes to the standard C error stream stderr
wclog (global object)
cout writes to the standard C output stream stdout
wcout (global object)
stdin expression of type FILE* associated with the input stream
stdout expression of type FILE* associated with the output stream
stderr expression of type FILE* associated with the error output stream
(macro constant)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.