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 ostreamstd-basic osyncstream-inheritance.svg

Схема наследования

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

Определено в заголовке <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>

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

(конструктор)
создаёт объект basic_osyncstream
(публичная функция-член)
operator=
присваивает объект basic_osyncstream
(публичная функция-член)
(деструктор)
уничтожает 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
[static]
возвращает уникальный целочисленный идентификатор, безопасный для использования в качестве индекса для pword() и iword()
(публичная статическая функция-член std::ios_base)
iword
при необходимости изменяет размер приватного хранилища и предоставляет доступ к элементу типа long по заданному индексу
(публичная функция-член std::ios_base)
pword
при необходимости изменяет размер приватного хранилища и предоставляет доступ к элементу типа void* по заданному индексу
(публичная функция-член std::ios_base)
Разное
register_callback
регистрирует функцию обратного вызова события
(публичная функция-член std::ios_base)
sync_with_stdio
[static]
устанавливает, будут ли C++ и C библиотеки ввода-вывода взаимодействовать
(публичная статическая функция-член std::ios_base)
Вложенные классы
failure
исключение потока
(публичный вложенный класс std::ios_base)
Init
инициализирует стандартные объекты потоков
(публичный вложенный класс std::ios_base)
END_OF_DOCUMENT_MARKER

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

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

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

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

(typedef)
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

(typedef)
iostate
Тип состояния потока

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

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

(typedef)
seekdir
Тип направления поиска

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

Константа Объяснение
beg начало потока
end конец потока
cur текущая позиция указателя позиции потока

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

Примечания

Макрос проверки наличия функции Значение Стандарт Функция
__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/w/cpp/io/basic_osyncstream

Spec-Zone.ru

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