Изучите буфферизацию стандартных потоков, там много нюансов.
1. Как вариант, используйте std::cerr
, он небуфферизирован, но вывод будет идти в stderr
. Для буферизированного stderr
используйте std::clog
2. Второй вариант: если не нужна новая строка, используйте явный << std::flush
.
3. Если нужна новая строка в конце и сброс буфферов, добавляйте к потоку << std::endl
. Он содержит в себе неявный flush
.
4. std::cout
же пишет в собственный буфер, а когда он сбросит его в stdout
, никто кроме него самого не знает. Для важных данных его не используют, для быстрых и частых — тоже, т. к. медленный.