std::basic_istream<CharT,Traits>::seekg
From cppreference.com
 
 
 < cpp | io | basic istream 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Input/output library 
 
 
 
 
 
 
 
 
 
 
 
 
 Print functions (C++23)
 Buffers
(C++23)
(C++98/26*)
(C++20)
 Streams
 Abstractions
 File I/O
 String I/O
 Array I/O
(C++23)
(C++23)
(C++23)
(C++98/26*)
(C++98/26*)
(C++98/26*)
 Synchronized Output
(C++20)
 Types
 Error category interface
(C++11)
(C++11)
std::basic_istream 
 
 
 
 Global objects
 Member functions
(C++11)
 Formatted input
 Unformatted input
 Positioning
basic_istream::seekg
 Miscellaneous
(C++11)
 Member classes
 Non-member functions
basic_istream& seekg( pos_type pos );
 (1) 
 
basic_istream& seekg( off_type off, std::ios_base::seekdir dir );
 (2) 
 
Sets input position indicator of the current associated streambuf object.
 Before doing anything else, 
seekg clears eofbit.
 (since C++11)seekg behaves as UnformattedInputFunction, except that gcount()  is not affected. After constructing and checking the sentry object,
1) if fail() != true, sets the input position indicator to absolute (relative to the beginning of the file) value pos. Specifically, executes rdbuf()->pubseekpos(pos, std::ios_base::in ) (pubseekpos, in turn, calls seekpos of the specific buffer, such as basic_filebuf::seekpos, basic_stringbuf::seekpos, or strstreambuf::seekpos). In case of failure, calls setstate(std::ios_base::failbit ).
2) if fail() != true, sets the input position indicator to position off, relative to position, defined by dir. Specifically, executes rdbuf()->pubseekoff(off, dir, std::ios_base::in ). In case of failure, calls setstate(std::ios_base::failbit ).
[edit] Parameters
 pos
 -
 absolute position to set the input position indicator to
 off
 -
 relative position (positive or negative) to set the input position indicator to
 dir
 -
 defines base position to apply the relative offset to. It can be one of the following constants:
 
 
 repositions the file position, using absolute addressing 
(virtual protected member function of
 
 repositions the next pointer in the input sequence, output sequence, or both using absolute addressing 
(virtual protected member function of
 
 repositions the next pointer in the input sequence, output sequence, or both using absolute addressing 
(virtual protected member function of
 
 repositions the file position, using relative addressing 
(virtual protected member function of
 
 repositions the next pointer in the input sequence, output sequence, or both, using relative addressing 
(virtual protected member function of
 
 
 
 
 
 
 
 
 
  Constant
 Explanation
 beg
 the beginning of a stream
 end
 the ending of a stream
 cur
 the current position of stream position indicator
[edit] Return value
*this
[edit] Exceptions
failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.If an internal operation throws an exception, it is caught and badbit  is set. If exceptions()  is set for badbit, the exception is rethrown.
[edit] Notes
seekg(n) is not necessarily equivalent to seekg(n, ios::beg). std::basic_ifstream , for example, requires the absolute position n to come from tellg() .
[edit] Example
Run this code
#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'; }
Output:
word1 = Hello, word2 = Hello,
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 129 | C++98 | there was no way to indicate a failure | sets failbiton failure | 
| LWG 136 | C++98 | seekgcould set the output stream | only sets the input stream | 
| LWG 537 | C++98 | the type of off was off_type& | corrected to off_type | 
[edit] See also
 
 returns the output position indicator 
(public member function of
(public member function of
std::basic_ostream<CharT,Traits>) [edit] 
 
 sets the output position indicator 
(public member function of
(public member function of
std::basic_ostream<CharT,Traits>) [edit] 
[virtual]
(virtual protected member function of
std::basic_filebuf<CharT,Traits>) [edit] 
[virtual]
(virtual protected member function of
std::basic_stringbuf<CharT,Traits,Allocator>) [edit] 
[virtual]
(virtual protected member function of
std::strstreambuf) [edit] 
[virtual]
(virtual protected member function of
std::basic_filebuf<CharT,Traits>) [edit] 
[virtual]
(virtual protected member function of
std::basic_stringbuf<CharT,Traits,Allocator>) [edit]