std::unitbuf, std::nounitbuf
Определён в заголовочном файле <ios> | ||
|---|---|---|
std::ios_base& unitbuf( std::ios_base& str ); | (1) | |
std::ios_base& nounitbuf( std::ios_base& str ); | (2) |
Включает или отключает автоматическую очистку выходного потока после любой операции вывода. Не влияет на ввод.
unitbuf в потоке str, как если бы была вызвана функция str.setf(std::ios_base::unitbuf).unitbuf в потоке str, как если бы была вызвана функция str.unsetf(std::ios_base::unitbuf).Это манипулятор ввода-вывода; его можно вызвать с помощью выражения, например out << std::unitbuf, для любого out типа std::basic_ostream или выражения, например in >> std::unitbuf, для любого in типа std::basic_istream.
Примечания
Очистка выполняется в деструкторе объекта std::basic_ostream::sentry, который вызывает str.rdbuf()->pubsync(), если str.flags() & std::ios_base::unitbuf равно true.
Для стандартных объектов вывода std::cerr и std::wcerr по умолчанию установлен бит unitbuf.
Параметры
| str | - | ссылка на поток ввода-вывода |
Возвращаемое значение
str (ссылка на поток после манипуляции).
Пример
Без std::unitbuf или другой явной очистки результат вывода будет тем же, но он не будет отображаться в реальном времени.
#include <chrono>
#include <iostream>
template<typename Diff>
void log_progress(Diff d)
{
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d)
<< " ... ";
}
int main()
{
volatile int sink = 0;
std::cout << std::unitbuf; // enable automatic flushing
const auto start = 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
log_progress(std::chrono::high_resolution_clock::now() - start);
}
std::cout << '\n';
}
Вывод:
571ms ... 1146ms ... 1722ms ... 2294ms ... 2865ms ...
См. также
| очищает выходной поток (шаблон функции) |
|
выводит '\n' и очищает выходной поток (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/manip/unitbuf