Spec-Zone.ru › C++

std::basic_osyncstream

Определён в заголовочном файле <syncstream>
template<
    class CharT,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>
> class basic_osyncstream : public std::basic_ostream<CharT, Traits>
(начиная с C++20)

Шаблон класса std::basic_osyncstream — это удобная обёртка для std::basic_syncbuf. Он предоставляет механизм синхронизации потоков, записывающих в один и тот же поток.

Его можно использовать с именованной переменной:

{
    std::osyncstream synced_out(std::cout); // synchronized wrapper for std::cout
    synced_out << "Hello, ";
    synced_out << "World!";
    synced_out << std::endl; // flush is noted, but not yet performed
    synced_out << "and more!\n";
} // characters are transferred and std::cout is flushed

а также с временным объектом:

std::osyncstream(std::cout) << "Hello, " << "World!" << '\n';

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

Типичная реализация std::basic_osyncstream содержит только один член: обёрнутый объект std::basic_syncbuf.

cpp/io/ios base cpp/io/basic ios cpp/io/basic ostream

Диаграмма наследования

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

Определён в заголовочном файле <syncstream>
Тип Определение
std::osyncstream std::basic_osyncstream<char>
std::wosyncstream std::basic_osyncstream<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>
syncbuf_type std::basic_syncbuf<CharT,Traits,Allocator>

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

(constructor)
создаёт объект basic_osyncstream
(открытая функция-член)
operator=
присваивает объект basic_osyncstream
(открытая функция-член)
(destructor)
уничтожает basic_osyncstream и передаёт его внутренний буфер
(открытая функция-член)
rdbuf
возвращает указатель на базовый basic_syncbuf
(открытая функция-член)
get_wrapped
возвращает указатель на буфер потока конечного назначения
(открытая функция-член)
emit
вызывает emit() для базового basic_syncbuf, чтобы передать его внутренние данные в конечное место назначения
(открытая функция-член)

Унаследовано от std::basic_ostream

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

Форматированный вывод
operator<<
вставляет форматированные данные
(открытая функция-член std::basic_ostream<CharT,Traits>)
Неформатированный вывод
put
вставляет символ
(открытая функция-член std::basic_ostream<CharT,Traits>)
write
вставляет блоки символов
(открытая функция-член std::basic_ostream<CharT,Traits>)
Позиционирование
tellp
возвращает индикатор позиции вывода
(открытая функция-член std::basic_ostream<CharT,Traits>)
seekp
устанавливает индикатор позиции вывода
(открытая функция-член std::basic_ostream<CharT,Traits>)
Разное
flush
синхронизирует данные с базовым устройством хранения
(открытая функция-член std::basic_ostream<CharT,Traits>)

Классы-члены

sentry
реализует базовую логику подготовки потока к операциям вывода
(открытый класс-член std::basic_ostream<CharT,Traits>)

Унаследовано от std::basic_ios

Типы-члены

Тип-член Определение
char_type CharT
traits_type Traits
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type

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

Функции состояния
good
проверяет, не произошла ли ошибка, то есть доступны ли операции ввода-вывода
(открытая функция-член std::basic_ios<CharT,Traits>)
eof
проверяет, достигнут ли конец файла
(открытая функция-член std::basic_ios<CharT,Traits>)
fail
проверяет, произошла ли ошибка
(открытая функция-член std::basic_ios<CharT,Traits>)
bad
проверяет, произошла ли неустранимая ошибка
(открытая функция-член std::basic_ios<CharT,Traits>)
operator!
проверяет, произошла ли ошибка (синоним fail())
(открытая функция-член std::basic_ios<CharT,Traits>)
operator bool
проверяет, не произошла ли ошибка (синоним !fail())
(открытая функция-член std::basic_ios<CharT,Traits>)
rdstate
возвращает флаги состояния
(открытая функция-член std::basic_ios<CharT,Traits>)
setstate
устанавливает флаги состояния
(открытая функция-член std::basic_ios<CharT,Traits>)
clear
изменяет флаги состояния
(открытая функция-член std::basic_ios<CharT,Traits>)
Форматирование
copyfmt
копирует информацию о форматировании
(открытая функция-член std::basic_ios<CharT,Traits>)
fill
управляет символом заполнения
(открытая функция-член std::basic_ios<CharT,Traits>)
Разное
exceptions
управляет маской исключений
(открытая функция-член std::basic_ios<CharT,Traits>)
imbue
устанавливает локаль
(открытая функция-член std::basic_ios<CharT,Traits>)
rdbuf
управляет связанным буфером потока
(открытая функция-член std::basic_ios<CharT,Traits>)
tie
управляет связанным потоком
(открытая функция-член std::basic_ios<CharT,Traits>)
narrow
преобразует символы в узкие
(открытая функция-член std::basic_ios<CharT,Traits>)
widen
преобразует символы в широкие
(открытая функция-член std::basic_ios<CharT,Traits>)

Унаследовано от std::ios_base

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

Форматирование
flags
управляет флагами форматирования
(открытая функция-член std::ios_base)
setf
устанавливает заданный флаг форматирования
(открытая функция-член std::ios_base)
unsetf
сбрасывает заданный флаг форматирования
(открытая функция-член std::ios_base)
precision
управляет десятичной точностью операций с числами с плавающей запятой
(открытая функция-член std::ios_base)
width
управляет шириной поля
(открытая функция-член std::ios_base)
Локали
imbue
устанавливает локаль
(открытая функция-член std::ios_base)
getloc
возвращает текущую локаль
(открытая функция-член std::ios_base)
Внутренний расширяемый массив
xalloc
[статическая]
возвращает уникальное в пределах программы целое число, которое можно безопасно использовать в качестве индекса для pword() и iword()
(открытая статическая функция-член std::ios_base)
iword
при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа long по заданному индексу
(открытая функция-член std::ios_base)
pword
при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа void* по заданному индексу
(открытая функция-член std::ios_base)
Разное
register_callback
регистрирует функцию обратного вызова для события
(открытая функция-член std::ios_base)
sync_with_stdio
[статическая]
задаёт, могут ли библиотеки ввода-вывода C++ и C взаимодействовать друг с другом
(открытая статическая функция-член std::ios_base)
Классы-члены
failure
исключение потока
(открытый класс-член std::ios_base)
Init
инициализирует стандартные объекты потоков
(открытый класс-член std::ios_base)

Типы-члены и константы

Тип Пояснение
openmode
тип режима открытия потока

Также определены следующие константы:

Константа Пояснение
app перед каждой записью перемещаться в конец потока
binary открывать в двоичном режиме
in открывать для чтения
out открывать для записи
trunc отбрасывать содержимое потока при открытии
ate сразу после открытия перемещаться в конец потока
noreplace (C++23) открывать в эксклюзивном режиме

(псевдоним типа)
fmtflags
тип флагов форматирования

Также определены следующие константы:

Константа Пояснение
dec использовать десятичную систему счисления для целочисленного ввода-вывода: см. std::dec
oct использовать восьмеричную систему счисления для целочисленного ввода-вывода: см. std::oct
hex использовать шестнадцатеричную систему счисления для целочисленного ввода-вывода: см. std::hex
basefield dec | oct | hex. Удобно для операций маскирования
left выравнивание по левому краю (символы заполнения добавляются справа): см. std::left
right выравнивание по правому краю (символы заполнения добавляются слева): см. std::right
internal внутреннее выравнивание (символы заполнения добавляются в заданную внутреннюю позицию): см. std::internal
adjustfield left | right | internal. Удобно для операций маскирования
scientific выводить числа с плавающей запятой в экспоненциальной или, при сочетании с fixed, шестнадцатеричной форме: см. std::scientific
fixed выводить числа с плавающей запятой в фиксированной или, при сочетании с scientific, шестнадцатеричной форме: см. std::fixed
floatfield scientific | fixed. Удобно для операций маскирования
boolalpha вставлять и извлекать значения типа bool в буквенно-цифровом формате: см. std::boolalpha
showbase добавлять префикс, указывающий основание системы счисления для целочисленного вывода, и требовать указатель валюты при денежном вводе-выводе: см. std::showbase
showpoint безусловно выводить десятичный разделитель при выводе чисел с плавающей запятой: см. std::showpoint
showpos выводить символ + для неотрицательных чисел: см. std::showpos
skipws пропускать начальные пробельные символы перед некоторыми операциями ввода: см. std::skipws
unitbuf сбрасывать буфер вывода после каждой операции вывода: см. std::unitbuf
uppercase заменять некоторые строчные буквы их прописными эквивалентами при выполнении некоторых операций вывода: см. std::uppercase

(псевдоним типа)
iostate
тип состояния потока

Также определены следующие константы:

Константа Пояснение
goodbit ошибок нет
badbit неустранимая ошибка потока
failbit операция ввода-вывода завершилась неудачно (ошибка форматирования или извлечения)
eofbit связанная входная последовательность достигла конца файла

(псевдоним типа)
seekdir
тип направления перемещения

Также определены следующие константы:

Константа Пояснение
beg начало потока
end конец потока
cur текущая позиция индикатора позиции потока

(псевдоним типа)
event
задаёт тип события
(перечисление)
event_callback
тип функции обратного вызова
(псевдоним типа)

Примечания

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

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

Spec-Zone.ru

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