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