stdin, stdout, stderr
|
Défini dans l'en-tête
<cstdio>
|
||
|
#define stdin /* implementation-defined */
|
(1) | |
|
#define stdout /* implementation-defined */
|
(2) | |
|
#define stderr /* implementation-defined */
|
(3) | |
Trois flux de texte sont prédéfinis. Ces flux sont implicitement ouverts et non orientés au démarrage du programme.
Ce qui constitue un dispositif interactif est défini par l'implémentation.
Ces macros sont développées en expressions de type std:: FILE * .
Notes
Bien que non imposée par POSIX, la convention UNIX est que
stdin
et
stdout
sont tamponnés par ligne s'ils sont associés à un terminal, et que
stderr
est non tamponné.
Ces macros peuvent être développées en lvalues modifiables. Si l'une de ces std:: FILE * lvalue est modifiée, les opérations ultérieures sur le flux correspondant entraînent un comportement non spécifié ou indéfini.
Exemple
Cet exemple montre une fonction similaire à 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); }
Sortie possible :
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
Voir aussi
|
lit depuis le flux d'entrée standard C
stdin
(objet global) |
|
|
écrit vers le flux de sortie standard C
stdout
(objet global) |
|
|
écrit vers le flux d'erreur standard C
stderr
, non tamponné
(objet global) |
|
|
écrit vers le flux d'erreur standard C
stderr
(objet global) |
|
|
(C++11)
|
imprime une sortie formatée vers
stdout
, un flux de fichier ou un tampon
(fonction) |
|
type d'objet, capable de contenir toutes les informations nécessaires pour contrôler un flux d'E/S C
(typedef) |
|
|
Documentation C
pour
stdin
,
stdout
,
stderr
|
|