cout << "текст" отображается только часть времени - PullRequest
0 голосов
/ 26 октября 2011

Я научился трудному способу использования endl в конце оператора cout для очистки буфера. Что меня смущает, так это то, почему endl нужен только иногда. Обычно я могу просто сделать

cout << "test";

И он покажет тест. Но в середине длинной консольной программы у меня будет похожий оператор cout, и ничего не будет отображаться, и код не будет двигаться дальше. Добавление endl в конец решает проблему путем очистки буфера и отображения текста. Но что вызывает автоматическую очистку буфера в некоторых случаях и ручную очистку в других? Я не могу предоставить пример кода, потому что я не знаю, как воспроизвести проблему, но я предполагаю, что большинство из вас видели это.

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Когда буфер достигает определенной длины или программа нормально завершает работу, буфер сбрасывается.

1 голос
/ 26 октября 2011

Когда и почему буфер очищается автоматически, зависит от разработчиков конкретной платформы, над которой вы работаете. Вы не должны делать никаких предположений или предположений о том, когда буфер будет очищен.

Если вы хотите отобразить текст, просто добавьте std :: endl. ;)

...