std::basic_stringbuf<CharT,Traits,Allocator>:: seekpos
|
protected
:
virtual
pos_type seekpos
(
pos_type sp,
|
||
Перемещает std::basic_streambuf::gptr и/или std::basic_streambuf::pptr , если возможно, в позицию, указанную sp .
Эффективно выполняет seekoff ( off_type ( sp ) , std:: ios_base :: beg , which ) .
Содержание |
Параметры
| sp | - |
позиция в потоке, например, полученная с помощью
seekoff()
или
seekpos()
|
||||||
| which | - |
определяет, какая последовательность затрагивается: входная, выходная или обе. Может быть одной или комбинацией следующих констант:
|
Возвращаемое значение
sp при успехе или pos_type ( off_type ( - 1 ) ) при неудаче.
Примечания
seekpos()
вызывается функцией
std::basic_streambuf::pubseekpos()
, которая в свою очередь вызывается однопараметрическими версиями
std::basic_istream::seekg()
и
std::basic_ostream::seekp()
.
Пример
#include <sstream> #include <iostream> struct mybuf : std::stringbuf { mybuf(const std::string& str) : std::stringbuf(str) {} pos_type seekpos(pos_type sp, std::ios_base::openmode which) { std::cout << "Before seekpos(" << sp << "), size of the get area is " << egptr() - eback() << " with " << egptr() - gptr() << " read positions available.\n"; pos_type rc = std::stringbuf::seekpos(sp, which); std::cout << "seekpos() returns " << rc << ".\nAfter the call, " << "size of the get area is " << egptr() - eback() << " with " << egptr() - gptr() << " read positions available.\n"; return rc; } }; int main() { mybuf buf("12345"); std::iostream stream(&buf); stream.seekg(2); }
Вывод:
Before seekpos(2), size of the get area is 5 with 5 read positions available. seekpos() returns 2. After the call, size of the get area is 5 with 3 read positions available.
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 375 | C++98 |
статические константные члены
std::ios_base
были
ошибочно указаны как члены std::basic_ios |
исправлено |
| LWG 564 | C++98 |
было неясно, как перепозиционировать
gptr
и/или
pptr
|
они перепозиционируются с помощью seekoff() |
Смотрите также
|
вызывает
seekpos
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
[virtual]
|
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя относительную адресацию
(виртуальная защищенная функция-член) |
|
[virtual]
|
перемещает позицию в файле, используя абсолютную адресацию
(виртуальная защищенная функция-член
std::basic_filebuf<CharT,Traits>
)
|
|
[virtual]
|
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя абсолютную адресацию
(виртуальная защищенная функция-член
std::strstreambuf
)
|