Namespaces
Variants

std::basic_istream<CharT,Traits>:: seekg

From cppreference.net
basic_istream & seekg ( pos_type pos ) ;
(1)
basic_istream & seekg ( off_type off, std:: ios_base :: seekdir dir ) ;
(2)
**Примечание:** В соответствии с требованиями: - HTML теги и атрибуты сохранены без изменений - Текст внутри тегов ` `, `
`, `` не переведен (в данном случае C++ код)
- C++ специфические термины (basic_istream, seekg, pos_type, off_type, std::ios_base::seekdir) не переведены
- Сохранено оригинальное форматирование

Устанавливает индикатор позиции ввода текущего связанного streambuf объекта.

Перед выполнением любых других действий, seekg сбрасывает eofbit . (начиная с C++11)

seekg ведёт себя как UnformattedInputFunction , за исключением того, что gcount() не затрагивается. После создания и проверки объекта-стража,

1) если fail ( ) ! = true , устанавливает индикатор позиции ввода на абсолютное значение (относительно начала файла) pos . Конкретно, выполняет rdbuf ( ) - > pubseekpos ( pos, std:: ios_base :: in ) ( pubseekpos , в свою очередь, вызывает seekpos конкретного буфера, например basic_filebuf::seekpos , basic_stringbuf::seekpos , или strstreambuf::seekpos ). В случае неудачи, вызывает setstate ( std:: ios_base :: failbit ) .
2) если fail ( ) ! = true , устанавливает индикатор позиции ввода на позицию off , относительно позиции, определяемой dir . Конкретно, выполняет rdbuf ( ) - > pubseekoff ( off, dir, std:: ios_base :: in ) . В случае неудачи, вызывает setstate ( std:: ios_base :: failbit ) .

Содержание

Параметры

pos - абсолютная позиция для установки указателя позиции ввода
off - относительная позиция (положительная или отрицательная) для установки указателя позиции ввода
dir - определяет базовую позицию для применения относительного смещения. Может быть одной из следующих констант:
Константа Описание
beg начало потока
end конец потока
cur текущая позиция указателя позиции потока

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

* this

Исключения

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Если внутренняя операция выбрасывает исключение, оно перехватывается и badbit устанавливается. Если exceptions() установлен для badbit , исключение выбрасывается повторно.

Примечания

seekg(n) не обязательно эквивалентно seekg(n, ios::beg) . std:: basic_ifstream , например, требует, чтобы абсолютная позиция n была получена из tellg() .

Пример

#include <iostream>
#include <sstream>
#include <string>
int main()
{
    std::string str = "Hello, world";
    std::istringstream in(str);
    std::string word1, word2;
    in >> word1;
    in.seekg(0); // rewind
    in >> word2;
    std::cout << "word1 = " << word1 << '\n'
              << "word2 = " << word2 << '\n';
}

Вывод:

word1 = Hello,
word2 = Hello,

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 129 C++98 не было способа указать на ошибку устанавливает failbit при ошибке
LWG 136 C++98 seekg мог устанавливать выходной поток устанавливает только входной поток
LWG 537 C++98 тип off был off_type& исправлен на off_type

Смотрите также

возвращает индикатор позиции ввода
(публичная функция-член)
возвращает индикатор позиции вывода
(публичная функция-член std::basic_ostream<CharT,Traits> )
устанавливает индикатор позиции вывода
(публичная функция-член std::basic_ostream<CharT,Traits> )
вызывает seekpos ( )
(публичная функция-член std::basic_streambuf<CharT,Traits> )
[virtual]
перемещает позицию в файле, используя абсолютную адресацию
(виртуальная защищенная функция-член std::basic_filebuf<CharT,Traits> )
[virtual]
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя абсолютную адресацию
(виртуальная защищенная функция-член std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя абсолютную адресацию
(виртуальная защищенная функция-член std::strstreambuf )
вызывает seekoff ( )
(публичная функция-член std::basic_streambuf<CharT,Traits> )
[virtual]
перемещает позицию в файле, используя относительную адресацию
(виртуальная защищенная функция-член std::basic_filebuf<CharT,Traits> )
[virtual]
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя относительную адресацию
(виртуальная защищенная функция-член std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
перемещает следующий указатель во входной последовательности, выходной последовательности или в обеих, используя относительную адресацию
(виртуальная защищенная функция-член std::strstreambuf )