std::basic_ostream<CharT,Traits>::flush
basic_ostream& flush(); |
Записывает незафиксированные изменения в базовую последовательность вывода. Ведёт себя как UnformattedOutputFunction.
Если rdbuf() является указателем null, объект-сторож не создаётся.
В противном случае, после создания и проверки объекта-сторожа, вызывается 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 << "Output from thread... ";
for (int i{1}; i != 10; ++i)
{
std::this_thread::sleep_for(250ms);
std::cout << i << ' ';
// output three numbers at once;
// the effect is observable only in real-time
if (0 == (i % 3))
std::cout.flush();
}
std::cout << std::endl; // flushes as well
}
int main()
{
std::thread tr{f};
std::this_thread::sleep_for(150ms);
std::clog << "Output from main\n";
tr.join();
}Вывод:
Output from main Output from thread... 1 2 3 4 5 6 7 8 9
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 581 | C++98 |
flush() не вела себя как UnformattedOutputFunctionиз-за разрешения LWG issue 60 | ведёт себя как UnformattedOutputFunction |
См. также
вызывает sync() (публичный член-функция std::basic_streambuf<CharT,Traits>) |
|
|
[виртуальный] | синхронизирует буферы с ассоциированной последовательностью символов (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
| очищает поток вывода (шаблон функции) |
|
выводит '\n' и очищает поток вывода (шаблон функции) |
|
| синхронизирует с базовым устройством хранения (публичный член-функция std::basic_istream<CharT,Traits>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_ostream/flush