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
атомарно передаёт весь внутренний буфер обёрнутому буферу потока
(открытая функция-член)
get_wrapped
получает указатель на обёрнутый буфер потока
(открытая функция-член)
get_allocator
получает распределитель памяти, используемый этим basic_syncbuf
(открытая функция-член)
set_emit_on_sync
изменяет текущую политику вывода при синхронизации
(открытая функция-член)

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

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

Функции, не являющиеся членами

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

Унаследовано от 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

Функции-члены

(деструктор)
[виртуальная]
уничтожает объект 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/cpp/io/basic_syncbuf

Spec-Zone.ru

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