как убедиться, что буфер не переполнен,
Выходной буфер не "переполнен".Когда он заполняется, он автоматически сбрасывается, т.е. его содержимое записывается, а его длина сбрасывается на 0. Это тот случай, если cin
/ cout
связаны или нет.
cin и cout работают правильно, не блокируя
Обычно вы хотите, чтобы операции на cin
/ cout
блокировались.Но опять же, блокирующий и неблокирующий ввод / вывод не имеет никакого отношения к тому, связаны ли cin
/ cout
.
и буфер очищается должным образом, когда я не использую std ::епсИ.Использует ли \ n "автоматически это?cout
автоматически переводится в режим линейной буферизации, если выход идет на терминал;в противном случае блок буферизуется (т. е. сбрасывается только при полной загрузке).
В соревновании по программированию cout
обычно переходит в канал или файл журнала, поэтому он буферизуется в блоке, а '\n'
нене вызывает флешТем не менее, в этой ситуации также не имеет значения, отображаются ли приглашения перед прочтением ввода (что является обычным случаем использования для связанного cin
/ cout
).Просто убедитесь, что вы выводите правильный вывод, и дайте библиотеке ввода-вывода беспокоиться о буферизации.Буфер автоматически сбрасывается при полном заполнении, когда поток закрыт и когда ваша программа завершает работу.Вывод не будет потерян (если ваша программа не работает, но у вас есть другие поводы для беспокойства).