Namespaces
Variants

stdin, stdout, stderr

From cppreference.net
< cpp ‎ | io ‎ | c
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.

1) Associé au flux d' entrée standard , utilisé pour la lecture des entrées conventionnelles. Au démarrage du programme, le flux est entièrement tamponné si et seulement si on peut déterminer que le flux ne fait pas référence à un dispositif interactif.
2) Associé au flux de sortie standard , utilisé pour écrire la sortie conventionnelle. Au démarrage du programme, le flux est entièrement tamponné si et seulement si on peut déterminer que le flux ne fait pas référence à un dispositif interactif.
3) Associé au flux d' erreur standard , utilisé pour écrire la sortie de diagnostic. Au démarrage du programme, le flux n'est pas entièrement tamponné.

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)
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