Вывод в потоки обычно буферизован .Если буфер не очищен (что происходит, когда вы заполняете буфер полностью или явно flush it), то вывод фактически не будет записан.
Потоковый буфер также очищается, когдаПотоковый объект закрыт, что происходит, когда std::cout
уничтожается как часть завершения программы.Вот почему вы видите вывод при выходе из программы.
Итак, решение простое: явно очищайте буфер (используя, например, std::cout.flush();
) после каждой записи.