para not namespace libreria identificador esta dev definido declared declarado c++ debugging buffer iostream cout

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 en std::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").