Spec-Zone.ru › C++

std::basic_syncbuf

Определено в заголовке <syncstream>
template<
    class CharT,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>
> class basic_syncbuf : public std::basic_streambuf<CharT, Traits>
(с C++20)

std::basic_syncbuf является обёрткой для std::basic_streambuf (переданной при создании в виде указателя). Она накапливает вывод в собственном внутреннем буфере и атомарно передаёт всё содержимое в обернутый буфер при уничтожении и при явном запросе, чтобы они появлялись как непрерывная последовательность символов. Она гарантирует отсутствие гонок данных и переплетения символов, отправленных в обернутый буфер, пока все другие выводы, сделанные в тот же буфер, выполняются через, возможно, разные экземпляры std::basic_syncbuf.

Типичная реализация std::basic_syncbuf содержит указатель на обернутый std::basic_streambuf, булеву переменную, указывающую, будет ли буфер передавать своё содержимое обернутому буферу при синхронизации (очистке), булеву переменную, указывающую на ожидающую очистку, когда политика не предусматривает вывода при синхронизации, внутренний буфер, использующий Allocator (такой как std::string), и указатель на мьютекс, используемый для синхронизации вывода между несколькими потоками, обращающимися к одному и тому же обернутому буферу потока (эти мьютексы могут находиться в хэш-таблице с указателями на std::basic_streambuf объекты в качестве ключей).

Как и другие классы streambuf, std::basic_syncbuf обычно используется только через соответствующий поток, std::osyncstream, а не напрямую.

Предоставлены несколько определений типов для распространённых типов символов:

Определено в заголовке <syncstream>
Тип Определение
std::syncbuf std::basic_syncbuf<char>
std::wsyncbuf std::basic_syncbuf<wchar_t>

Типы членов

Тип члена Определение
char_type CharT
traits_type Traits; программа некорректна, если Traits::char_type не является CharT.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type
allocator_type Allocator
streambuf_type std::basic_streambuf<CharT, Traits>

Члены-функции

Публичные члены-функции

(конструктор)
создаёт объект basic_syncbuf
(публичная функция-член)
operator=
присваивает объект basic_syncbuf
(публичная функция-член)
swap
меняет местами два объекта basic_syncbuf
(публичная функция-член)
(деструктор)
уничтожает basic_syncbuf и выводит её внутренний буфер
(публичная функция-член)
emit
атомарно передаёт весь внутренний буфер в обернутый streambuf
(публичная функция-член)
get_wrapped
получает указатель на обернутый streambuf
(публичная функция-член)
get_allocator
получает аллокатор, используемый данным basic_syncbuf
(публичная функция-член)
set_emit_on_sync
изменяет текущую политику вывода при синхронизации
(публичная функция-член)

Защищённые члены-функции

sync
либо выводит, либо записывает ожидающую очистку, в зависимости от текущей политики вывода при синхронизации
(публичная функция-член)

Функции вне класса

std::swap(std::basic_syncbuf)
(C++20)
специализация алгоритма std::swap
(шаблон функции)
END_OF_DOCUMENT_MARKER

Наследуется от std::basic_streambuf

Типы членов

Тип члена Определение
char_type CharT
traits_type Traits; программа некорректна, если Traits::char_type не является CharT.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type

Члены-функции

(деструктор)
[virtual]
удаляет объект basic_streambuf
(виртуальная публичная функция-член std::basic_streambuf<CharT,Traits>)
Локали
pubimbue
вызывает imbue()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
getloc
получает копию связанной локали
(публичная функция-член std::basic_streambuf<CharT,Traits>)
Позиционирование
pubsetbuf
вызывает setbuf()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
pubseekoff
вызывает seekoff()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
pubseekpos
вызывает seekpos()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
pubsync
вызывает sync()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
Область получения
in_avail
получает количество символов, немедленно доступных в области получения
(публичная функция-член std::basic_streambuf<CharT,Traits>)
snextc
перемещает входную последовательность, затем считывает один символ без повторного перемещения
(публичная функция-член std::basic_streambuf<CharT,Traits>)
sbumpcstossc
(удалено в C++17)
считывает один символ из входной последовательности и перемещает последовательность
(публичная функция-член std::basic_streambuf<CharT,Traits>)
sgetc
считывает один символ из входной последовательности без перемещения последовательности
(публичная функция-член std::basic_streambuf<CharT,Traits>)
sgetn
вызывает xsgetn()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
Область вывода
sputc
записывает один символ в область вывода и перемещает указатель на следующий
(публичная функция-член std::basic_streambuf<CharT,Traits>)
sputn
вызывает xsputn()
(публичная функция-член std::basic_streambuf<CharT,Traits>)
Возврат
sputbackc
возвращает один символ в входную последовательность
(публичная функция-член std::basic_streambuf<CharT,Traits>)
sungetc
перемещает указатель на следующий символ в входной последовательности назад на один
(публичная функция-член std::basic_streambuf<CharT,Traits>)

Защищенные функции-члены

(конструктор)
создает объект basic_streambuf
(защищённый член-функция)
operator=
(C++11)
заменяет объект basic_streambuf
(защищённый член-функция)
swap
(C++11)
меняет местами два объекта basic_streambuf
(защищённый член-функция)
Локали
imbue
[виртуальный]
изменяет связанную локаль
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
Позиционирование
setbuf
[виртуальный]
заменяет буфер на пользовательский массив, если разрешено
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
seekoff
[виртуальный]
перепозиционирует указатель на следующий символ в последовательности ввода, вывода или обоих, используя относительный адрес
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
seekpos
[виртуальный]
перепозиционирует указатель на следующий символ в последовательности ввода, вывода или обоих, используя абсолютный адрес
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
sync
[виртуальный]
синхронизирует буферы со связанной последовательностью символов
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
Область получения
showmanyc
[виртуальный]
получает количество символов, доступных для ввода в связанной последовательности ввода, если известно
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
underflow
[виртуальный]
считывает символы из связанной последовательности ввода в область получения
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
uflow
[виртуальный]
считывает символы из связанной последовательности ввода в область получения и перемещает указатель на следующий символ
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
xsgetn
[виртуальный]
считывает несколько символов из последовательности ввода
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
ebackgptregptr
возвращает указатель на начало, текущий символ и конец области получения
(защищённый член-функция)
gbump
перемещает указатель на следующий символ в последовательности ввода
(защищённый член-функция)
setg
перепозиционирует указатели начала, текущего и конечного символов последовательности ввода
(защищённый член-функция)
Область записи
xsputn
[виртуальный]
записывает несколько символов в последовательность вывода
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
overflow
[виртуальный]
записывает символы из области записи в связанную последовательность вывода
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)
pbasepptrepptr
возвращает указатель на начало, текущий символ и конец области записи
(защищённый член-функция)
pbump
перемещает указатель на следующий символ в последовательности вывода
(защищённый член-функция)
setp
перепозиционирует указатели начала, текущего и конечного символов последовательности вывода
(защищённый член-функция)
Возврат символа
pbackfail
[виртуальный]
возвращает символ в последовательность ввода, возможно, изменяя последовательность ввода
(виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>)

Примечания

Макросы проверки наличия функции Значение Стандарт Функция
__cpp_lib_syncbuf 201803L (C++20) Синхронизированный буферизованный ostream (std::syncbuf, std::osyncstream) и манипуляторы

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_syncbuf

Spec-Zone.ru

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