Вы процитировали ответ:
Буферы вывода могут быть явно очищены для принудительной записи буфера.
То есть вам может потребоваться «очистить» вывод, чтобы он был записан в базовый поток (который может быть файлом или, в перечисленных примерах, терминалом).
Как правило, 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;