std::basic_ostream<CharT,Traits>:: flush
|
basic_ostream
&
flush
(
)
;
|
||
Записывает незафиксированные изменения в базовую выходную последовательность. Ведет себя как UnformattedOutputFunction .
Если rdbuf() является нулевым указателем, объект-страж не создается.
В противном случае, после создания и проверки объекта sentry, вызывает rdbuf ( ) - > pubsync ( ) . Если вызов возвращает - 1 , вызывает setstate ( badbit ) .
Содержание |
Возвращаемое значение
* this
Исключения
Может выбросить std::ios_base::failure если ( exceptions ( ) & badbit ) ! = 0 .
Пример
#include <chrono> #include <iostream> #include <thread> using namespace std::chrono_literals; void f() { std::cout << "Вывод из потока... "; for (int i{1}; i != 10; ++i) { std::this_thread::sleep_for(250ms); std::cout << i << ' '; // вывод трех чисел за раз; // эффект наблюдается только в реальном времени if (0 == (i % 3)) std::cout.flush(); } std::cout << std::endl; // также выполняет сброс буфера } int main() { std::thread tr{f}; std::this_thread::sleep_for(150ms); std::clog << "Вывод из main\n"; tr.join(); }
Вывод:
Output from main Output from thread... 1 2 3 4 5 6 7 8 9
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 581 | C++98 |
flush()
не вел себя как
UnformattedOutputFunction
из-за решения LWG issue 60 |
ведет себя как
UnformattedOutputFunction |
Смотрите также
|
вызывает
sync
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
[virtual]
|
синхронизирует буферы с ассоциированной последовательностью символов
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
очищает выходной поток
(шаблон функции) |
|
|
выводит
'
\n
'
и очищает выходной поток
(шаблон функции) |
|
|
синхронизирует с базовым устройством хранения
(публичная функция-член
std::basic_istream<CharT,Traits>
)
|