Namespaces
Variants

std:: cerr, std:: wcerr

From cppreference.net
< cpp ‎ | io
헤더 파일에 정의됨 <iostream>
extern std:: ostream cerr ;
(1)
extern std:: wostream wcerr ;
(2)

전역 객체 std::cerr std::wcerr 는 구현에서 정의된 타입(각각 std::streambuf std::wstreambuf 에서 파생됨)의 스트림 버퍼로의 출력을 제어하며, 이는 표준 C 오류 출력 스트림 stderr 와 연결되어 있습니다.

이러한 객체들은 std::ios_base::Init 타입의 객체가 생성되는 첫 번째 시간 동안 또는 그 이전에 초기화되는 것이 보장되며, 순서화된 초기화 를 가진 정적 객체들의 생성자와 소멸자 내에서 사용 가능합니다 (단, 객체가 정의되기 전에 <iostream> 가 포함되어 있는 경우에 한함).

std :: ios_base :: sync_with_stdio ( false ) 가 호출되지 않은 경우, 서식이 지정된 출력과 서식이 지정되지 않은 출력 모두에 대해 여러 스레드에서 이러한 객체들을 동시에 안전하게 접근할 수 있습니다.

초기화되면, ( std :: cerr . flags ( ) & unitbuf ) ! = 0 ( std::wcerr 도 동일) 이는 이러한 스트림 객체로 전송된 모든 출력이 OS로 즉시 플러시됨을 의미합니다 ( std::basic_ostream::sentry 의 소멸자를 통해).

또한, std :: cerr . tie ( ) & std:: cout 를 반환합니다( std::wcerr std::wcout 도 동일함). 이는 std::cerr 에 대한 모든 출력 작업이 먼저 std:: cout . flush ( ) 를 실행함을 의미합니다( std::basic_ostream::sentry 의 생성자를 통해).

목차

참고 사항

이름의 'c'는 "character"(문자)를 의미합니다( stroustrup.com FAQ ); cerr 는 "character error (stream)"을 의미하며 wcerr 는 "wide character error (stream)"을 의미합니다.

예제

stderr 로의 출력을 std::cerr 를 통해 수행하면 std::cout 의 대기 중인 출력이 플러시되지만, stderr 로의 출력을 std::clog 를 통해 수행하면 플러시되지 않습니다.

#include <chrono>
#include <iostream>
#include <thread>
using namespace std::chrono_literals;
void f()
{
    std::cout << "Output from thread...";
    std::this_thread::sleep_for(2s);
    std::cout << "...thread calls flush()" << std::endl;
}
int main()
{
    std::jthread t1{f};
    std::this_thread::sleep_for(1000ms);
    std::clog << "This output from main is not tie()'d to cout\n";
    std::cerr << "This output is tie()'d to cout\n";
}

가능한 출력:

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

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 455 C++98 std :: cerr . tie ( )
std :: wcerr . tie ( ) 이 null 포인터를 반환함
각각 & std:: cout
& std:: wcout 을 반환함

참고 항목

표준 스트림 객체를 초기화함
( std::ios_base 의 public member class)
표준 C 오류 스트림에 기록함 stderr
(전역 객체)
표준 C 출력 스트림에 기록함 stdout
(전역 객체)
입력 스트림과 연관된 FILE * 타입의 표현식
출력 스트림과 연관된 FILE * 타입의 표현식
오류 출력 스트림과 연관된 FILE * 타입의 표현식
(매크로 상수)