std:: cout, std:: wcout
|
헤더 파일에 정의됨
<iostream>
|
||
|
extern
std::
ostream
cout
;
|
(1) | |
|
extern
std::
wostream
wcout
;
|
(2) | |
전역 객체
std::cout
과
std::wcout
는 구현에서 정의된 타입(
std::streambuf
에서 파생됨)의 스트림 버퍼로의 출력을 제어하며, 이는 표준 C 출력 스트림
stdout
과 연결되어 있습니다.
이러한 객체들은 std::ios_base::Init 타입의 객체가 생성되는 첫 번째 시간 동안 또는 그 이전에 초기화되는 것이 보장되며, 순서화된 초기화 를 가진 정적 객체들의 생성자와 소멸자 내에서 사용 가능합니다 (단, 객체가 정의되기 전에 <iostream> 가 포함되어 있는 경우).
std :: ios_base :: sync_with_stdio ( false ) 가 호출되지 않은 경우, 서식화된 출력과 비서식화된 출력 모두에 대해 여러 스레드에서 이러한 객체들을 동시에 안전하게 접근할 수 있습니다.
명세에 따라
std::cin
의
std::
cin
.
tie
(
)
는
&
std
::
cout
를 반환합니다. 이는
std::cin
에 대한 모든 입력 연산이
std
::
cout
.
flush
(
)
를 실행함을 의미합니다(
std::basic_istream::sentry
의 생성자를 통해). 마찬가지로,
std::
wcin
.
tie
(
)
는
&
std
::
wcout
를 반환합니다.
std::cerr
의 명세에 따라,
std::
cerr
.
tie
(
)
는
&
std
::
cout
를 반환합니다. 이는
std::cerr
에 대한 모든 출력 작업이
std
::
cout
.
flush
(
)
를 실행함을 의미합니다(
std::basic_ostream::sentry
의 생성자를 통해). 마찬가지로,
std::
wcerr
.
tie
(
)
는
&
std
::
wcout
를 반환합니다.
(C++11 이후)
참고 사항
이름의 'c'는 "문자(character)"를 의미합니다(
stroustrup.com FAQ
);
cout
은 "문자 출력(character output)"을 의미하며
wcout
은 "와이드 문자 출력(wide character output)"을 의미합니다.
동적 초기화
된
템플릿
변수들의 초기화 순서가 정해져 있지 않기 때문에,
std::ios_base::Init
타입의 객체가 생성되지 않은 경우, 이러한 변수들의 초기화가 시작되기 전에
std::cout
이 사용 가능한 상태로 초기화되었다고 보장할 수 없습니다.
예제
#include <iostream> struct Foo { int n; Foo() { std::cout << "static constructor\n"; } ~Foo() { std::cout << "static destructor\n"; } }; Foo f; // static object int main() { std::cout << "main function\n"; }
출력:
static constructor main function static destructor
참고 항목
|
표준 스트림 객체를 초기화함
(
std::ios_base
의
public member class)
|
|
|
표준 C 오류 스트림
stderr
에 기록하며, 버퍼링되지 않음
(global object) |
|
|
표준 C 오류 스트림
stderr
에 기록함
(global object) |
|
|
입력 스트림과 연관된
FILE
*
타입의 표현식
출력 스트림과 연관된 FILE * 타입의 표현식 오류 출력 스트림과 연관된 FILE * 타입의 표현식 (macro constant) |