Namespaces
Variants

std:: cout, std:: wcout

From cppreference.net
< cpp ‎ | io
헤더 파일에 정의됨 <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)