stdin, stdout, stderr
|
헤더 파일에 정의됨
<cstdio>
|
||
|
#define stdin /* implementation-defined */
|
(1) | |
|
#define stdout /* implementation-defined */
|
(2) | |
|
#define stderr /* implementation-defined */
|
(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
(전역 객체) |
|
|
(C++11)
|
서식이 지정된 출력을
stdout
, 파일 스트림 또는 버퍼에 출력
(함수) |
|
C I/O 스트림을 제어하는 데 필요한 모든 정보를 보유할 수 있는 객체 타입
(typedef) |
|
|
C 문서
참조:
stdin
,
stdout
,
stderr
|
|