Has citado la respuesta:
Los búferes de salida se pueden vaciar explícitamente para forzar la escritura del búfer.
Es decir, es posible que deba "vaciar" la salida para que se escriba en la secuencia subyacente (que puede ser un archivo o, en los ejemplos enumerados, una terminal).
Generalmente, stdout / cout está almacenado en búfer de línea: la salida no se envía al sistema operativo hasta que escribe una nueva línea o vacía explícitamente el búfer. La ventaja es que algo así std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
provoca solo una escritura en el "archivo" subyacente en lugar de seis, lo que es mucho mejor para el rendimiento. La desventaja es que un código como:
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
se generará .....
de inmediato (para una sleep
implementación exacta , consulte esta pregunta ). En tales casos, querrá un adicional << std::flush
para asegurarse de que se muestre la salida.
Leer cin
descargas cout
para que no necesite una descarga explícita para hacer esto:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;