Spec-Zone.ru › C++

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

См. также

pubsync
вызывает sync()
(публичный член-функция std::basic_streambuf<CharT,Traits>)
sync
[виртуальный]
синхронизирует буферы с ассоциированной последовательностью символов
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
flush
очищает поток вывода
(шаблон функции)
endl
выводит '\n' и очищает поток вывода
(шаблон функции)
sync
синхронизирует с базовым устройством хранения
(публичный член-функция 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API