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 (закрытое) | Объект типа std::ios_base::openmode, хранящий режим открытия.(объект-член, используемый только для описания*) |
buf (закрытое) | Объект std::span<CharT>, ссылающийся на базовый буфер. (объект-член, используемый только для описания*) |
Функции-члены
Открытые функции-члены |
|
создаёт объект basic_spanbuf (открытая функция-член) |
|
|
[виртуальный] | уничтожает объект basic_spanbuf (виртуальная открытая функция-член) |
присваивает объект basic_spanbuf (открытая функция-член) |
|
обменивает местами два объекта basic_spanbuf (открытая функция-член) |
|
| получает или инициализирует базовый буфер в соответствии с режимом (открытая функция-член) |
|
Защищённые функции-члены |
|
|
[виртуальная] | пытается заменить управляемую последовательность символов массивом (виртуальная защищённая функция-член) |
|
[виртуальная] | перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя относительную адресацию (виртуальная защищённая функция-член) |
|
[виртуальная] | перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя абсолютную адресацию (виртуальная защищённая функция-член) |
Функции, не являющиеся членами
|
(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 |
Функции-члены
|
[виртуальный] | уничтожает объект 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)(удалено в C++26) | реализует устройство для работы с массивом символов в необработанном виде (класс) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_spanbuf