stdin, stdout, stderr
|
ヘッダーで定義
<cstdio>
|
||
|
#define stdin /* implementation-defined */
|
(1) | |
|
#define stdout /* implementation-defined */
|
(2) | |
|
#define stderr /* implementation-defined */
|
(3) | |
3つのテキストストリームが事前に定義されています。これらのストリームはプログラム起動時に暗黙的にオープンされ、方向性を持ちません。
インタラクティブデバイスを構成するものは実装定義です。
これらのマクロは型 std:: FILE * の式に展開されます。
注記
POSIXで義務付けられてはいませんが、UNIXの慣例では、
stdin
と
stdout
は端末に関連付けられている場合にラインバッファリングされ、
stderr
は非バッファリングとなります。
これらのマクロは変更可能な左辺値に展開される可能性があります。これらの std:: FILE * 左辺値のいずれかが変更された場合、対応するストリームに対する後続の操作は未指定または未定義の動作を引き起こします。
例
この例は、 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ドキュメント
for
stdin
,
stdout
,
stderr
|
|