Ви цитували відповідь:
Вихідні буфери можна явно змити, щоб примусити буфер записати.
Тобто, можливо, вам доведеться «промити» вихідні дані, щоб змусити їх записатись у базовий потік (який може бути файлом або в перелічених прикладах терміналом).
Як правило, stdout / cout буферизується: вихідні дані не надсилаються в ОС, поки ви не напишете новий рядок або явно не промиєте буфер. Перевага полягає в тому, що щось на кшталт std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
викликає лише один запис у базовий «файл» замість шести, що набагато краще для продуктивності. Недоліком є такий код:
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
виведе .....
одразу (для точної sleep
реалізації див. це питання ). У таких випадках вам знадобиться додатковий << std::flush
для забезпечення відображення вихідних даних.
Читання cin
флешів, cout
тому для цього вам не потрібен явний флеш:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;