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