Ответ 1
Просто вставьте std::flush
:
std::cout << "Beginning computations..." << std::flush;
Также обратите внимание, что вставка std::endl
также будет скрыта после записи новой строки.
У меня есть код, например:
std::cout << "Beginning computations..."; // output 1
computations();
std::cout << " done!\n"; // output 2
Однако проблема заключается в том, что часто вывод # 1 и выход # 2 появляются (практически) одновременно. То есть, часто вывод # 1 не печатается на экране, пока не вернется computations()
. Поскольку вся цель вывода №1 означает, что что-то происходит в фоновом режиме (и, таким образом, чтобы поощрять терпение от пользователя), эта проблема не является хорошей.
Есть ли способ заставить буфер std::cout
печатать перед вызовом computations()
? В качестве альтернативы, есть ли другой способ (с использованием чего-то другого, кроме std::cout
), для печати на стандартную версию, которая могла бы устранить эту проблему?
Просто вставьте std::flush
:
std::cout << "Beginning computations..." << std::flush;
Также обратите внимание, что вставка std::endl
также будет скрыта после записи новой строки.
В дополнение к запросу Джозефа Мэнсфилда, std:: endl тоже делает флеш (кроме новой строки).
Вставляет конечный символ в выходную последовательность os и сбрасывает его, как если бы вы вызывали os.put(os.widen('\n')), за которым следует os.flush().