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(см. ниже) не равно нулю; это может произойти, если базового буфера нет или*thisне открыт в режиме, требуемом для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, если в which соответственно установлены std::ios_base::in и/или std::ios_base::out, где pbuf — указатель на начало базового буфера либо нулевой указатель, если базового буфера нет.
Параметры
| 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/cpp/io/basic_spanbuf/seekoff