Namespaces
Variants

stdin, stdout, stderr

From cppreference.net
< cpp ‎ | io ‎ | c
헤더 파일에 정의됨 <cstdio>
#define stdin  /* implementation-defined */
(1)
#define stdout /* implementation-defined */
(2)
#define stderr /* implementation-defined */
(3)

세 개의 텍스트 스트림이 미리 정의되어 있습니다. 이러한 스트림들은 프로그램 시작 시 암묵적으로 열리고 방향성이 설정되지 않은 상태입니다.

1) 표준 입력 스트림과 연관되어 있으며, 일반적인 입력을 읽는 데 사용됩니다. 프로그램 시작 시, 스트림이 대화형 장치를 참조하지 않는다고 판단될 수 있는 경우에만 스트림이 완전히 버퍼링됩니다.
2) 표준 출력 스트림과 연관되어 있으며, 일반적인 출력을 작성하는 데 사용됩니다. 프로그램 시작 시, 스트림이 대화형 장치를 참조하지 않는다고 판단될 수 있는 경우에만 스트림이 완전히 버퍼링됩니다.
3) 표준 오류 스트림과 연관되어 있으며, 진단 출력을 작성하는 데 사용됩니다. 프로그램 시작 시 스트림은 완전히 버퍼링되지 않습니다.

인터랙티브 장치의 구성 요소는 구현에 따라 정의됩니다.

이 매크로들은 std:: FILE * 타입의 표현식으로 확장됩니다.

참고 사항

POSIX에서 의무화되지는 않았지만, UNIX 관례에 따르면 stdin stdout 은 터미널과 연결된 경우 라인 버퍼링되며, stderr 은 버퍼링되지 않습니다.

이 매크로들은 수정 가능한 lvalue로 확장될 수 있습니다. 이러한 std:: FILE * lvalue 중 어느 하나가 수정되면, 해당 스트림에 대한 후속 작업은 지정되지 않거나 정의되지 않은 동작을 초래합니다.

예제

이 예제는 std::printf 와 유사한 함수를 보여줍니다.

#include <concepts>
#include <cstdio>
#include <type_traits>
template<typename T>
concept IsPrintable = std::integral<T> or std::floating_point<T> or std::is_pointer_v<T>;
int my_printf(char const* const format, IsPrintable auto const ... arguments)
{
    return std::fprintf(stdout, format, arguments...);
}
int main(int argv, char*[])
{
    my_printf("Strings and chars:\t%s %c\n", "hello", 'x');
    my_printf("Rounding:\t\t%f %.0f %.32f\n", 1.5, 1.5, 1.3);
    my_printf("Padding:\t\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);
    my_printf("Scientific:\t\t%E %e\n", 1.5, 1.5);
    my_printf("Hexadecimal:\t\t%a %A 0x%X\n", 1.5, 1.5, &argv);
}

가능한 출력:

Strings and chars:  hello x
Rounding:           1.500000 2 1.30000000000000004440892098500626
Padding:            01.50 1.50  1.50
Scientific:         1.500000E+00 1.500000e+00
Hexadecimal:        0x1.8p+0 0X1.8P+0 0x2CFB41BC

참고 항목

표준 C 입력 스트림으로부터 읽기 stdin
(전역 객체)
표준 C 출력 스트림에 쓰기 stdout
(전역 객체)
표준 C 오류 스트림에 쓰기 stderr , 버퍼링되지 않음
(전역 객체)
표준 C 오류 스트림에 쓰기 stderr
(전역 객체)
서식이 지정된 출력을 stdout , 파일 스트림 또는 버퍼에 출력
(함수)
C I/O 스트림을 제어하는 데 필요한 모든 정보를 보유할 수 있는 객체 타입
(typedef)
C 문서 참조: stdin , stdout , stderr