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
(typedef) |
|
|
Документация C
для
stdin
,
stdout
,
stderr
|
|