Spec-Zone.ru › C++

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
(виртуальная открытая функция-член)
operator=
присваивает объект basic_spanbuf
(открытая функция-член)
swap
обменивает местами два объекта basic_spanbuf
(открытая функция-член)
span
получает или инициализирует базовый буфер в соответствии с режимом
(открытая функция-член)
Защищённые функции-члены
setbuf
[виртуальная]
пытается заменить управляемую последовательность символов массивом
(виртуальная защищённая функция-член)
seekoff
[виртуальная]
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя относительную адресацию
(виртуальная защищённая функция-член)
seekpos
[виртуальная]
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя абсолютную адресацию
(виртуальная защищённая функция-член)

Функции, не являющиеся членами

std::swap(std::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>)
Локали
pubimbue
изменяет связанную локаль и вызывает imbue()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
getloc
получает копию связанной локали
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
Позиционирование
pubsetbuf
вызывает setbuf()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
pubseekoff
вызывает seekoff()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
pubseekpos
вызывает seekpos()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
pubsync
вызывает sync()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
Область чтения
in_avail
получает количество символов, доступных для немедленного чтения в области чтения
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
snextc
продвигает входную последовательность, а затем считывает один символ, не продвигая её повторно
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
sbumpcstossc
(удалено в C++17)
считывает один символ из входной последовательности и продвигает последовательность
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
sgetc
считывает один символ из входной последовательности, не продвигая её
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
sgetn
вызывает xsgetn()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
Область записи
sputc
записывает один символ в область записи и продвигает следующий указатель
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
sputn
вызывает xsputn()
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
Возврат символа
sputbackc
возвращает один символ во входную последовательность
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)
sungetc
перемещает следующий указатель во входной последовательности на одну позицию назад
(открытая функция-член класса std::basic_streambuf<CharT,Traits>)

Защищённые функции-члены

(конструктор)
создаёт объект basic_streambuf
(защищённая функция-член)
operator=
(C++11)
заменяет объект basic_streambuf
(защищённая функция-член)
swap
(C++11)
обменивает местами два объекта basic_streambuf
(защищённая функция-член)
Локали
imbue
[виртуальная]
реагирует на изменение связанной локали
(виртуальная защищённая функция-член класса 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>)
Область чтения
showmanyc
[виртуальная]
получает, если это известно, количество символов, доступных для чтения в связанной входной последовательности
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)
underflow
[виртуальная]
считывает символы из связанной входной последовательности в область чтения
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)
uflow
[виртуальная]
считывает символы из связанной входной последовательности в область чтения и продвигает следующий указатель
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)
xsgetn
[виртуальная]
считывает несколько символов из входной последовательности
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)
ebackgptregptr
возвращает указатели на начало, текущий символ и конец области чтения
(защищённая функция-член)
gbump
продвигает следующий указатель во входной последовательности
(защищённая функция-член)
setg
перемещает указатели начала, следующего символа и конца входной последовательности
(защищённая функция-член)
Область записи
xsputn
[виртуальная]
записывает несколько символов в выходную последовательность
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)
overflow
[виртуальная]
записывает символы из области записи в связанную выходную последовательность
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)
pbasepptrepptr
возвращает указатели на начало, текущий символ и конец области записи
(защищённая функция-член)
pbump
продвигает следующий указатель выходной последовательности
(защищённая функция-член)
setp
перемещает указатели начала, следующего символа и конца выходной последовательности
(защищённая функция-член)
Возврат символа
pbackfail
[виртуальная]
возвращает символ во входную последовательность, при необходимости изменяя её
(виртуальная защищённая функция-член класса std::basic_streambuf<CharT,Traits>)

Примечания

std::basic_spanbuf не владеет базовым буфером.

Программисты обязаны следить за тем, чтобы время жизни базового буфера не завершилось, пока он используется объектом std::basic_spanbuf. Если несколько потоков работают с одним и тем же базовым буфером через разные объекты std::basic_spanbuf, может потребоваться дополнительная синхронизация.

Макрос проверки поддержки возможностей Значение Стандарт Возможность
__cpp_lib_spanstream 202106L (C++23) std::spanbuf, std::spanstream

См. также

basic_stringbuf
реализует устройство для работы со строкой в необработанном виде
(шаблон класса)
strstreambuf
(устарело в 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

Spec-Zone.ru

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