Spec-Zone.ru › C++

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 - определяет базовую позицию для применения относительного смещения. Может быть одним из следующих констант:
Константа Объяснение
beg начало потока
end конец потока
cur текущая позиция указателя потока
which - определяет, какие последовательности (входные, выходные или обе) будут затронуты. Может быть одной или комбинацией следующих констант:
Константа Объяснение
in влияет на входную последовательность
out влияет на выходную последовательность

Возвращаемое значение

pos_type(newoff) при успехе, pos_type(off_type(-1)) при ошибке.

Пример

См. также

seekoff
[виртуальная]
перемещает указатель в входной, выходной последовательности или в обеих, используя относительное адресование
(виртуальная защищенная функция-член std::basic_stringbuf<CharT,Traits,Allocator>)
seekoff
[виртуальная]
перемещает указатель в входной, выходной последовательности или в обеих, используя относительное адресование
(виртуальная защищенная функция-член 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

Spec-Zone.ru

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