Espacios de nombres
Variantes
Acciones

stdin, stdout, stderr

De cppreference.com
< cpp‎ | io‎ | c
 
 
Biblioteca de E/S
Manipuladores de E/S
E/S estilo C
Búferes
(en desuso en C++98)
Flujos
Abstracciones
E/S de archivos
E/S de cadenas
E/S de arrays
(en desuso en C++98)
(en desuso en C++98)
(en desuso en C++98)
Salida sincronizada
Tipos
Interfaz de categoría de error
(C++11)
 
 
Definido en el archivo de encabezado <cstdio>
#define stdin  /* definido por la implementación */
(1)
#define stdout /* definido por la implementación */
(2)
#define stderr /* definido por la implementación */
(3)

Hay tres flujos de texto predefinidos. Estos flujos se abren de forma implícita y no están orientados al inicio del programa.

1) Asociado con el flujo de entrada estándar, se utiliza para leer la entrada convencional. Al inicio del programa, el flujo utiliza un búfer si y solo si se puede determinar que el flujo no hace referencia a un dispositivo interactivo.
2) Asociado con el flujo de salida estándar, se utiliza para escribir la salida convencional. Al inicio del programa, el flujo utiliza un búfer si y solo si se puede determinar que el flujo no hace referencia a un dispositivo interactivo.
3) Asociado con el flujo de error estándar, se utiliza para escribir la salida de diagnóstico. Al inicio del programa, el flujo no utiliza un búfer.

Lo que constituye un dispositivo interactivo se define por la implementación.

Estas macros se expanden a expresiones de tipo std::FILE*.

[editar] Notas

Aunque no lo exige POSIX, la convención de UNIX establece que stdin y stdout utilizan un búfer de línea si están asociados con una terminal y que stderr no utiliza un búfer.

Estas macros se pueden ampliar a l-valores modificables. Si se modifica alguno de estos l-valores std::FILE*, las operaciones posteriores en el flujo correspondiente dan como resultado un comportamiento no especificado o no definido.

[editar] Ejemplo

Este ejemplo muestra una función similar a std::printf.

#include <concepts>
#include <cstdio>
#include <type_traits>
 
template<typename T>
concept EsImprimible = std::integral<T> or std::floating_point<T> or std::is_pointer_v<T>;
 
int mi_printf(char const* const formato, EsImprimible auto const ... argumentos)
{
    return std::fprintf(stdout, formato, argumentos...);
}
 
int main(int argv, char*[])
{
    mi_printf("Cadenas y caracteres:\t%s %c\n", "hola", 'x');
    mi_printf("Redondeo:\t\t%f %.0f %.32f\n", 1.5, 1.5, 1.3);
    mi_printf("Relleno:\t\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);
    mi_printf("Científica:\t\t%E %e\n", 1.5, 1.5);
    mi_printf("Hexadecimal:\t\t%a %A 0x%X\n", 1.5, 1.5, &argv);
}

Posible salida:

Cadenas y caracteres:  hola x
Redondeo:           1.500000 2 1.30000000000000004440892098500626
Relleno:            01.50 1.50  1.50
Científica:         1.500000E+00 1.500000e+00
Hexadecimal:        0x1.8p+0 0X1.8P+0 0x2CFB41BC

[editar] Véase también

Lee del flujo de entrada estándar de C stdin.
(objeto global) [editar]
Escribe al flujo de salida estándar de C stdout.
(objeto global) [editar]
Escribe al flujo de error estándar de C stderr, sin búfer.
(objeto global) [editar]
Escribe al flujo de error estándar de C stderr.
(objeto global) [editar]
Imprime la salida formateada para stdout, una secuencia de archivo o un búfer.
(función) [editar]
Tipo objeto capaz de contener toda la información necesaria para controlar un flujo de E/S de C.
(typedef) [editar]
Documentación de C para stdin, stdout, stderr