std:: basic_syncbuf
|
Определено в заголовочном файле
<syncstream>
|
||
|
template
<
class
CharT,
|
(начиная с 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
, а не напрямую.
Предоставлены несколько typedef для распространённых символьных типов:
|
Определено в заголовке
<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
(публичная функция-член) |
|
присваивает объект
basic_syncbuf
(публичная функция-член) |
|
обменивает два объекта
basic_syncbuf
(публичная функция-член) |
|
уничтожает
basic_syncbuf
и отправляет его внутренний буфер
(публичная функция-член) |
|
|
атомарно передает весь внутренний буфер в обернутый streambuf
(публичная функция-член) |
|
|
получает указатель на обернутый streambuf
(публичная функция-член) |
|
получает аллокатор, используемый этим
basic_syncbuf
(публичная функция-член) |
|
|
изменяет текущую политику emit-on-sync
(публичная функция-член) |
|
Защищенные функции-члены |
|
|
либо отправляет, либо записывает отложенную очистку, в зависимости от текущей политики emit-on-sync
(публичная функция-член) |
|
Функции, не являющиеся членами класса
|
(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
|
Функции-члены
|
[virtual]
|
уничтожает объект
basic_streambuf
(виртуальная публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
Локали |
|
|
изменяет связанную локаль и вызывает
imbue
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
получает копию связанной локали
(публичная функция-член
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>
)
|
|
Область получения |
|
|
получает количество символов, немедленно доступных в области получения
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
продвигает входную последовательность, затем читает один символ без дальнейшего продвижения
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
(удалено в C++17)
|
читает один символ из входной последовательности и продвигает последовательность
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
читает один символ из входной последовательности без продвижения последовательности
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
вызывает
xsgetn
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
Область записи |
|
|
записывает один символ в область записи и продвигает указатель следующего
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
вызывает
xsputn
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
Возврат |
|
|
возвращает один символ обратно во входную последовательность
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
перемещает указатель следующего во входной последовательности назад на один
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
Защищенные функции-члены
создаёт объект
basic_streambuf
(защищённая функция-член) |
|
|
(C++11)
|
заменяет объект
basic_streambuf
(защищённая функция-член) |
|
(C++11)
|
меняет местами два
basic_streambuf
объекта
(защищённая функция-член) |
Локали |
|
|
[virtual]
|
реагирует на изменение связанной локали
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
Позиционирование |
|
|
[virtual]
|
заменяет буфер пользовательским массивом, если это разрешено
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя относительную адресацию
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя абсолютную адресацию
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
синхронизирует буферы с ассоциированной последовательностью символов
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
Получить площадь |
|
|
[virtual]
|
получает количество символов, доступных для ввода в связанной входной последовательности, если известно
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
читает символы из связанной входной последовательности в область получения
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
читает символы из связанной входной последовательности в область получения и продвигает указатель следующего символа
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
считывает несколько символов из входной последовательности
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
возвращает указатель на начало, текущий символ и конец области получения
(защищённая функция-член) |
|
|
перемещает указатель следующего элемента во входной последовательности
(защищённая функция-член) |
|
|
переставляет указатели начала, следующего и конца входной последовательности
(защищённая функция-член) |
|
Область размещения |
|
|
[virtual]
|
записывает несколько символов в выходную последовательность
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
записывает символы в связанную выходную последовательность из области вывода
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
возвращает указатель на начало, текущий символ и конец области вывода
(защищенная функция-член) |
|
|
перемещает указатель следующего элемента выходной последовательности
(защищённая функция-член) |
|
|
изменяет позиции указателей начала, следующего и конца выходной последовательности
(защищенная функция-член) |
|
Putback |
|
|
[virtual]
|
возвращает символ обратно во входную последовательность, возможно изменяя входную последовательность
(виртуальная защищённая функция-член
std::basic_streambuf<CharT,Traits>
)
|
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_syncbuf
|
201803L
|
(C++20) |
Синхронизированный буферизованный ostream (
std::syncbuf
,
std::osyncstream
) и манипуляторы
|