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.
Диаграмма наследования
Предоставлено несколько псевдонимов типов для распространённых типов символов:
Определён в заголовочном файле <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 (открытая функция-член) |
|
присваивает объект basic_osyncstream (открытая функция-член) |
|
уничтожает basic_osyncstream и передаёт его внутренний буфер (открытая функция-член) |
|
возвращает указатель на базовый basic_syncbuf (открытая функция-член) |
|
| возвращает указатель на буфер потока конечного назначения (открытая функция-член) |
|
вызывает emit() для базового basic_syncbuf, чтобы передать его внутренние данные в конечное место назначения (открытая функция-член) |
Унаследовано от std::basic_ostream
Функции-члены
Форматированный вывод |
|
| вставляет форматированные данные (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Неформатированный вывод |
|
| вставляет символ (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
| вставляет блоки символов (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Позиционирование |
|
| возвращает индикатор позиции вывода (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
| устанавливает индикатор позиции вывода (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Разное |
|
| синхронизирует данные с базовым устройством хранения (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Классы-члены
| реализует базовую логику подготовки потока к операциям вывода (открытый класс-член 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 |
Функции-члены
Функции состояния |
|
| проверяет, не произошла ли ошибка, то есть доступны ли операции ввода-вывода (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| проверяет, достигнут ли конец файла (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| проверяет, произошла ли ошибка (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| проверяет, произошла ли неустранимая ошибка (открытая функция-член std::basic_ios<CharT,Traits>) |
|
проверяет, произошла ли ошибка (синоним fail()) (открытая функция-член std::basic_ios<CharT,Traits>) |
|
проверяет, не произошла ли ошибка (синоним !fail()) (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| возвращает флаги состояния (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| устанавливает флаги состояния (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| изменяет флаги состояния (открытая функция-член std::basic_ios<CharT,Traits>) |
|
Форматирование |
|
| копирует информацию о форматировании (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| управляет символом заполнения (открытая функция-член std::basic_ios<CharT,Traits>) |
|
Разное |
|
| управляет маской исключений (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| устанавливает локаль (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| управляет связанным буфером потока (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| управляет связанным потоком (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| преобразует символы в узкие (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| преобразует символы в широкие (открытая функция-член std::basic_ios<CharT,Traits>) |
|
Унаследовано от std::ios_base
Функции-члены
Форматирование |
|
| управляет флагами форматирования (открытая функция-член std::ios_base) |
|
| устанавливает заданный флаг форматирования (открытая функция-член std::ios_base) |
|
| сбрасывает заданный флаг форматирования (открытая функция-член std::ios_base) |
|
| управляет десятичной точностью операций с числами с плавающей запятой (открытая функция-член std::ios_base) |
|
| управляет шириной поля (открытая функция-член std::ios_base) |
|
Локали |
|
| устанавливает локаль (открытая функция-член std::ios_base) |
|
| возвращает текущую локаль (открытая функция-член std::ios_base) |
|
Внутренний расширяемый массив |
|
|
[статическая] | возвращает уникальное в пределах программы целое число, которое можно безопасно использовать в качестве индекса для pword() и iword() (открытая статическая функция-член std::ios_base) |
| при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа long по заданному индексу (открытая функция-член std::ios_base) |
|
| при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа void* по заданному индексу (открытая функция-член std::ios_base) |
|
Разное |
|
| регистрирует функцию обратного вызова для события (открытая функция-член std::ios_base) |
|
|
[статическая] | задаёт, могут ли библиотеки ввода-вывода C++ и C взаимодействовать друг с другом (открытая статическая функция-член std::ios_base) |
Классы-члены |
|
| исключение потока (открытый класс-член std::ios_base) |
|
| инициализирует стандартные объекты потоков (открытый класс-член std::ios_base) |
|
Типы-члены и константы |
|||||||||||||||||||||||||||||||||||||||
| Тип | Пояснение | ||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| тип режима открытия потока Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| тип флагов форматирования Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| тип состояния потока Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| тип направления перемещения Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| задаёт тип события (перечисление) |
|||||||||||||||||||||||||||||||||||||||
| тип функции обратного вызова (псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
Примечания
| Макрос проверки поддержки функциональности | Значение | Стандарт | Функциональность |
|---|---|---|---|
__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