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 << ")" << endlprovoca 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 sleepimplementación exacta , consulte esta pregunta ). En tales casos, querrá un adicional << std::flushpara asegurarse de que se muestre la salida.
Leer cindescargas coutpara que no necesite una descarga explícita para hacer esto:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;