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