std::basic_spanbuf<CharT,Traits>::seekoff
protected:
pos_type seekoff( off_type off, std::ios_base::seekdir dir,
std::ios_base::openmode which =
std::ios_base::in | std::ios_base::out ) override;
|
(с C++23) |
Перемещает указатель на следующий элемент области получения и/или записи, если это возможно, в позицию, соответствующую ровно off элементам от начала, конца или текущей позиции области получения и/или записи буфера.
Пусть n — количество CharT элементов в базовом буфере или 0, если базового буфера нет. Данная функция терпит неудачу, если:
- указатель на следующий элемент области получения и/или записи, который нужно переместить, равен null, а вычисленное значение
newoff(см. ниже) не равно нулю, что может произойти, если базового буфера нет, или базовый буфер не открыт в режиме, требуемомwhich, или -
dirравноstd::ios_base::cur, и одновременно установленыstd::ios_base::inиstd::ios_base::outвwhich, или - вычисленное значение
newoffне представимо вoff_type, меньше нуля или большеn.
newoff вычисляется следующим образом:
- Если
dirравноstd::ios_base::beg,newoffравноoff. - Если
dirравноstd::ios_base::cur,newoffравно-
pptr() - pbase() + offеслиstd::ios_base::outустановлено вwhich, или -
gptr() - eback() + offеслиstd::ios_base::inустановлено вwhich.
-
- Если
dirравноstd::ios_base::end,newoffравно-
pptr() - pbase() + offеслиstd::ios_base::outно неstd::ios_base::inустановлено в режиме открытия*this, - в противном случае,
off + n.
-
Данная функция перемещает указатель на следующий элемент области получения и/или записи в pbuf + newoff при успешном выполнении, если std::ios_base::in и/или std::ios_base::out соответствующим образом установлены в which, где pbuf — указатель на начало базового буфера или значение null, если базового буфера нет.
Параметры
| off | - | относительная позиция для перемещения указателя(ей) | ||||||||
| dir | - | определяет базовую позицию для применения относительного смещения. Может быть одним из следующих констант:
|
||||||||
| which | - | определяет, какие последовательности (входные, выходные или обе) будут затронуты. Может быть одной или комбинацией следующих констант:
|
Возвращаемое значение
pos_type(newoff) при успехе, pos_type(off_type(-1)) при ошибке.
Пример
См. также
|
[виртуальная] |
перемещает указатель в входной, выходной последовательности или в обеих, используя относительное адресование (виртуальная защищенная функция-член std::basic_stringbuf<CharT,Traits,Allocator>) |
|
[виртуальная] |
перемещает указатель в входной, выходной последовательности или в обеих, используя относительное адресование (виртуальная защищенная функция-член std::strstreambuf) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_spanbuf/seekoff