stdin : cin, wcin
stdout : cout, wcout
사용자에게 즉시 보여줘야 하는 치명적인 오류를 출력할 때 사용합니다.
unbuffered 방식으로 출력할 때 마다 즉시 시스템 호출을 발생시키기 때문에, 성능 면에서 불리할 수 있습니다.
#include <iostream>
using namespace std;
int main() {
cerr << "This is an error (narrow characters)." << endl;
wcerr << L"이것은 에러입니다 (넓은 문자)." << endl;
return 0;
}
일반적인 정보나 경고와 같이 로그성 메시지에 적합합니다.
buffered 방식으로 버퍼에 잠시 저장 후 출력합니다.
<예시> | 동일한 사용 방법
#include <iostream>
using namespace std;
int main() {
cout << "toast1" << endl;
cerr << "toast2" << endl;
clog << "toast3" << endl;
return 0;
}
결과값
cerr : 비버퍼링 방식이라 성능에 문제가 있고, 따로 기록이 필요 (별도의 리디렉션)
clog : 일반 출력과 혼합 시 가독성이 저하되고, 로그를 분리하려면 별도의 리디렉션이 필요
cout : 로그/에러용 메시지에는 적합하지 않음
cerr/clog는 에러나 로그용, cout은 일반 출력용으로 쓰는 것이 올바른 역할 분리입니다.
역할 분리를 통해 가독성 향상을 기대할 수 있습니다.