std:: cerr, std:: wcerr
|
헤더 파일에 정의됨
<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 * 타입의 표현식 (매크로 상수) |