not - libreria para cout dev c++
std:: cout no se imprimirá (3)
¿Hay alguna circunstancia en que std::cout << "hello"
no funcione? Tengo código ac / c ++, sin embargo std::cout
no imprime nada, ni siquiera cadenas constantes (como "hola").
¿Hay alguna forma de comprobar si cout
puede / no puede abrir la transmisión? Hay algunas funciones miembro como good()
, bad()
, ... pero no sé cuál es adecuado para mí.
Asegúrate de enjuagar la corriente. Esto es necesario porque las secuencias de salida están almacenadas temporalmente y usted no tiene ninguna garantía sobre cuándo se vaciará el búfer a menos que lo lave manualmente.
std::cout << "Hello" << std::endl;
std::endl
generará una nueva línea y std::endl
la transmisión. Alternativamente, std::flush
simplemente hará el color. Flushing también se puede hacer utilizando la función de miembro de la secuencia:
std::cout.flush();
Para deshabilitar de forma efectiva el almacenamiento en búfer, puede llamar a esto:
std::setvbuf(stdout, NULL, _IONBF, 0);
Alternativamente, puede llamar a su programa y desactivar el almacenamiento en búfer de salida en la línea de comando:
stdbuf -o 0 ./yourprogram --yourargs
Tenga en cuenta que esto no suele hacerse por motivos de rendimiento.
Es probable que std::cout
no funcione debido al almacenamiento en búfer (lo que está escribiendo termina en el búfer de std::cout
lugar de en el resultado).
Puedes hacer una de estas cosas:
flush
std::cout
explícitamente:std::cout << "test" << std::flush; // std::flush is in <iostream>
std::cout << "test"; std::cout.flush(); // explicitly flush here
std::cout << "test" << std::endl; // endl sends newline char(s) and then flushes
use
std::cerr
enstd::cerr
lugar.std::cerr
no está almacenado en el búfer, pero utiliza una secuencia diferente (es decir, la segunda solución puede no funcionar para usted si le interesa más que "ver el mensaje en la consola").