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