std:: flush
|
Определено в заголовочном файле
<ostream>
|
||
|
template
<
class
CharT,
class
Traits
>
std:: basic_ostream < CharT, Traits > & flush ( std:: basic_ostream < CharT, Traits > & os ) ; |
||
Сбрасывает выходную последовательность os как если бы вызывался os. flush ( ) .
Это манипулятор вывода только для записи, он может быть вызван выражением вида
out
<<
std
::
flush
для любого
out
типа
std::basic_ostream
.
Содержание |
Примечания
Этот манипулятор может использоваться для немедленного вывода неполной строки, например, при отображении вывода длительного процесса, логировании активности нескольких потоков или логировании активности программы, которая может неожиданно завершиться с ошибкой. Явный сброс буфера std::cout также необходим перед вызовом std::system , если порожденный процесс выполняет любой ввод-вывод на экран (распространенный пример - std:: system ( "pause" ) в Windows). В большинстве других обычных сценариев интерактивного ввода-вывода std::endl является избыточным при использовании с std::cout , поскольку любой ввод из std::cin , вывод в std::cerr или завершение программы принудительно вызывают std:: cout . flush ( ) .
Когда необходимо сбросить полную строку вывода, можно использовать std::endl манипулятор.
Когда каждая операция вывода должна быть сброшена, может использоваться манипулятор std::unitbuf .
Параметры
| os | - | ссылка на выходной поток |
Возвращаемое значение
os (ссылка на поток после манипуляции).
Пример
Без
std::flush
вывод будет таким же, но может не отображаться в реальном времени.
#include <chrono> #include <iostream> template<typename Diff> void log_progress(Diff d) { std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d) << " ... " << std::flush; } int main() { volatile int sink = 0; auto t1 = std::chrono::high_resolution_clock::now(); for (int j = 0; j < 5; ++j) { for (int n = 0; n < 10000; ++n) for (int m = 0; m < 20000; ++m) sink += m * n; // do some work auto now = std::chrono::high_resolution_clock::now(); log_progress(now - t1); } std::cout << '\n'; }
Возможный вывод:
567ms ... 1137ms ... 1707ms ... 2269ms ... 2842ms ...
Смотрите также
|
управляет тем, сбрасывается ли вывод после каждой операции
(функция) |
|
|
выводит
'
\n
'
и сбрасывает выходной поток
(шаблон функции) |
|
|
синхронизирует с базовым устройством хранения
(публичная функция-член
std::basic_ostream<CharT,Traits>
)
|