std::basic_spanbuf
Определено в заголовке <spanstream> | ||
|---|---|---|
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_spanbuf
: public std::basic_streambuf<CharT, Traits>
| (с C++23) |
std::basic_spanbuf является std::basic_streambuf, ассоциированная последовательность символов которой представляет собой расположенную в памяти последовательность произвольных символов, которая может быть инициализирована или доступна как экземпляр std::span<CharT>.
std::basic_spanbuf выполняет ввод-вывод в фиксированном буфере и, следовательно, не пытается получить новый буфер, когда основной буфер исчерпан.
Предоставлены несколько определений типов для распространённых типов символов:
Определено в заголовке <spanstream> |
|
|---|---|
| Тип | Определение |
std::spanbuf | std::basic_spanbuf<char> |
std::wspanbuf | std::basic_spanbuf<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 |
Данные члены
| Название члена | Определение |
|---|---|
mod (private) | Переменная, записывающая режим открытия. (член объекта для демонстрации*) |
buf (private) | std::span<CharT>, ссылающийся на основной буфер. (член объекта для демонстрации*) |
Члены-функции
Общедоступные члены-функции |
|
|
(C++23) | создаёт объект basic_spanbuf (общедоступная функция-член) |
| (деструктор)
[виртуальный] (C++23) | уничтожает объект basic_spanbuf (виртуальная общедоступная функция-член) |
|
(C++23) | присваивает объект basic_spanbuf (общедоступная функция-член) |
|
(C++23) | меняет местами два объекта basic_spanbuf (общедоступная функция-член) |
|
(C++23) | получает или инициализирует основной буфер в соответствии с режимом (общедоступная функция-член) |
Защищённые члены-функции |
|
|
[виртуальный] (C++23) | пытается заменить управляемую последовательность символов массивом (виртуальная защищённая функция-член) |
|
[виртуальный] (C++23) | перепозиционирует указатель на следующий символ в входной последовательности, выходной последовательности или обеих, используя относительное адресование (виртуальная защищённая функция-член) |
|
[виртуальный] (C++23) | перепозиционирует указатель на следующий символ в входной последовательности, выходной последовательности или обеих, используя абсолютное адресование (виртуальная защищённая функция-член) |
Функции, не являющиеся членами
|
(C++23) | специализирует алгоритм 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 (защищённый член-функция) |
Локали |
|
|
[виртуальный] | изменяет связанную локаль (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
Позиционирование |
|
|
[виртуальный] | заменяет буфер на массив, определённый пользователем, если разрешено (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | изменяет положение указателя на следующий символ в последовательности ввода, вывода или обоих, используя относительное адресование (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | изменяет положение указателя на следующий символ в последовательности ввода, вывода или обоих, используя абсолютное адресование (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | синхронизирует буферы со связанной последовательностью символов (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
Область получения |
|
|
[виртуальный] | получает количество символов, доступных для ввода в связанной последовательности ввода, если известно (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | считывает символы из связанной последовательности ввода в область получения (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | считывает символы из связанной последовательности ввода в область получения и перемещает указатель на следующий символ (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | считывает несколько символов из последовательности ввода (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
| возвращает указатель на начало, текущий символ и конец области получения (защищённый член-функция) |
|
| перемещает указатель на следующий символ в последовательности ввода (защищённый член-функция) |
|
| изменяет указатели на начало, следующий символ и конец последовательности ввода (защищённый член-функция) |
|
Область вывода |
|
|
[виртуальный] | записывает несколько символов в последовательность вывода (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
|
[виртуальный] | записывает символы в связанную последовательность вывода из области вывода (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
| возвращает указатель на начало, текущий символ и конец области вывода (защищённый член-функция) |
|
| перемещает указатель на следующий символ в последовательности вывода (защищённый член-функция) |
|
| изменяет указатели на начало, следующий символ и конец последовательности вывода (защищённый член-функция) |
|
Возврат |
|
|
[виртуальный] | возвращает символ в последовательность ввода, возможно, изменив последовательность ввода (виртуальная защищённая член-функция std::basic_streambuf<CharT,Traits>) |
Примечания
std::basic_spanbuf не владеет базовым буфером.
Программисты несут ответственность за обеспечение того, что базовый буфер существует во время использования объектом std::basic_spanbuf. Дополнительная синхронизация может потребоваться, если более одного потока оперируют одним базовым буфером с помощью различных объектов std::basic_spanbuf.
| Макрос проверки наличия функции | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_spanstream | 202106L | (C++23) |
std::spanbuf, std::spanstream |
См. также
| реализует примитивное устройство строки (шаблон класса) |
|
|
(устарело в C++98) | реализует примитивное устройство массива символов (класс) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_spanbuf