Пространства имён
Варианты
Действия

std::unitbuf, std::nounitbuf

Материал из cppreference.com
< cpp‎ | io‎ | manip

 
 
Библиотека ввода/вывода
Манипуляторы ввода/вывода
Функции print(C++23)
Ввод/вывод в стиле C
Буферы
(устарело в C++98)
Потоки
Абстракции
Файловый ввод/вывод
Ввод/вывод строк
Ввод/вывод массивов
(устарело в C++98)
(устарело в C++98)
(устарело в C++98)
Синхронизированный вывод
Типы
Интерфейс категорий ошибок
(C++11)
 
Манипуляторы ввода/вывода
Форматирование чисел с плавающей точкой
Целочисленное форматирование
Булево форматирование
Контроль ширины поля и заполнения
Другое форматирование
Обработка пробелов
Сброс вывода
unitbufnounitbuf
Манипуляции с флагами состояния
Ввод/вывод времени и денежных едениц
(C++11)
(C++11)
(C++11)
(C++11)
Манипулятор заключения в кавычки
(C++14)
 
Определено в заголовочном файле <ios>
std::ios_base& unitbuf(std::ios_base& str );
(1)
std::ios_base& nounitbuf(std::ios_base& str );
(2)
Включает или выключает автоматическую промывку выходного потока после любой операции вывода. Не влияет на входе.
Оригинал:
Enables or disables automatic flushing of the output stream after any output operation. Has no effect on input.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
1)
позволяет unitbuf флага в потоке str как при вызове str.setf(std::ios_base::unitbuf)
Оригинал:
enables the unitbuf flag in the stream str as if by calling str.setf(std::ios_base::unitbuf)
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
отключает unitbuf флага в потоке str как при вызове str.unsetf(std::ios_base::unitbuf)
Оригинал:
disables the unitbuf flag in the stream str as if by calling str.unsetf(std::ios_base::unitbuf)
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Это I / O манипулятора, его можно назвать с выражением таких как out << std::unitbuf для любого типа outstd::basic_ostream или выражения, такие как in >> std::unitbuf для любого типа instd::basic_istream.
Оригинал:
This is an I/O manipulator, it may be called with an expression such as out << std::unitbuf for any out of type std::basic_ostream or with an expression such as in >> std::unitbuf for any in of type std::basic_istream.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править]Заметки

Промывка осуществляется в деструкторе std::basic_ostream::sentry объект, который вызывает str.rdbuf()->pubsync() если str.flags()&std::ios_base::unitbuf==true.
Оригинал:
Flushing is performed in the destructor of the std::basic_ostream::sentry object, which calls str.rdbuf()->pubsync() if str.flags()&std::ios_base::unitbuf==true.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Стандартные объекты выход std::cerr и std::wcerr их unitbuf бит установлен по умолчанию.
Оригинал:
The standard output objects std::cerr and std::wcerr have their unitbuf bit set by default.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Параметры

str
ссылка на поток ввода / вывода
Оригинал:
reference to I/O stream
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Возвращаемое значение

str (ссылка на поток после манипуляций)
Оригинал:
str (reference to the stream after manipulation)
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Пример

Без STD :: unitbuf или другого явного флеш, на выходе то же самое, но не отображается в режиме реального времени .
Оригинал:
Without std::unitbuf or another explicit flush, the output is the same, but does not appear in real time.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

#include <iostream>#include <chrono>template<typename Diff>void log_progress(Diff d){std::cout<<"..("<<std::chrono::duration_cast<std::chrono::milliseconds>(d).count()<<" ms)..";}int main(){volatileint sink=0;std::cout<< std::unitbuf;// enable automatic flushing   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 workauto now =std::chrono::high_resolution_clock::now(); log_progress(now - t1);}std::cout<<'\n';}

Вывод:

..(450 ms)....(902 ms)....(1352 ms)....(1802 ms)....(2252 ms)..

[править]См. также

очищает выходной поток
(шаблон функции)[править]
выводит '\n' и очищает выходной поток
(шаблон функции)[править]
close