
C/C++
Что делает flush код ниже? Он никак не влияет на перенос курсора на новую строку, тоже самое можно сделать с endl.

В многопоточном приложении, когда требуется вывод промежуточных результатов std::flush отрывает текущий кусок буфера и принудительно выводит его на экран консоли. В противном случае поток будет накапливать информацию в буфер и выведет её в консоль только после своего завершения. Такое поведение связано с тем, что объект std::cout возвращает себя по ссылке после каждого вызова. Например, если вы напишете в коде std::cout << a << b << c << '\n'; то объект std::cout будет вызван четыре раза: для a, b, c и символа конца строки. Если в потоке этот код вызвать десять раз, то он накопит 40 вызовов и по завершении выведет всё сразу без std::flush или 10 раз выведет данные с ним. Теперь понятно?
Олег Луценко
То есть flush не нужен?
В данном конкретном случае flush совершенно не нужен.
flush производит принудительный вывод содержимого буфера.
endl выводит '\n' и выполняет flush. Так что при использовании endl отдельный flush не требуется.
При выводе данные сначала накапливаются в буфере в оперативной памяти. И только когда буфер заполняется, производится реальный вывод данных - совсем не в тот момент, когда был выполнен cout <<. И возможна ситуация, когда программа запрашивает ввод, а поясняющего текста на экране нет - т. к. он ещё в буфере.
Вот для исключения подобного и используют flush, который производит немедленный вывод содержимого буфера - независимо от его заполненности.
flush производит принудительный вывод содержимого буфера.
endl выводит '\n' и выполняет flush. Так что при использовании endl отдельный flush не требуется.
При выводе данные сначала накапливаются в буфере в оперативной памяти. И только когда буфер заполняется, производится реальный вывод данных - совсем не в тот момент, когда был выполнен cout <<. И возможна ситуация, когда программа запрашивает ввод, а поясняющего текста на экране нет - т. к. он ещё в буфере.
Вот для исключения подобного и используют flush, который производит немедленный вывод содержимого буфера - независимо от его заполненности.
Олег Луценко
А не проще-ли использовать "\n" вместо endl и flush
очищает буфер cout
Олег Луценко
а зачем это надо?) не совсем понимаю)
Олег Луценко
новичок просто, и нигде никто не говорит и пытаюсь разобраться)
Похожие вопросы
- Друзья помогите с ребусом VOLVO+FIAT=MOTOR. I need your help urgently...Мой код ниже. Посоветуйте с циклами!)))
- Строки с++, не получается написать никак код
- С++. Почему в методе set_union единица повторяется несколько раз? Код и скриншот ниже
- Помогите написать код c++ со строками
- Помогите написать код на Си, по теме "строки".
- Помогите доработать код на СИ по теме строки
- Помогите написать код! С++ Строки (без использования классов)
- Ошибки в коде. Почему не работает и как сделать чтобы заработало ?
- Помогите сделать код на С++ Не понимаю как это сделать
- Нужно сделать метод, в который я могу передать строку, а она должна вернуть мне длину последнего слова в этой строке