home | help
std::basic_istream::seekg(3)   C++ Standard Libary  std::basic_istream::seekg(3)

NAME
     std::basic_istream::seekg - std::basic_istream::seekg

Synopsis
	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 ob-
     ject.

	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()->pub-
     seekpos(pos,
	std::ios_base::in)  (pubseekpos,  in turn, calls seekpos of the specific
     buffer, such
	as  basic_filebuf::seekpos,  basic_stringbuf::seekpos,	 or   strstream-
     buf::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()->pub-
     seekoff(off, dir,
	std::ios_base::in).    In    case     of     failure,	  calls     set-
     state(std::ios_base::failbit).

Parameters
	pos - absolute position to set the input position indicator to
	off - relative position (positive or negative) to set the input position
     indicator
	      to
	      defines  base  position to apply the relative offset to. It can be
     one of the
	      following constants:

	dir - Constant Explanation
	      beg      the beginning of a stream
	      end      the ending of a stream
	      cur      the current position of stream position indicator

Return value
	*this

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.

Notes
	seekg(n)  is  not necessarily equivalent to seekg(n, ios::beg). std::ba-
     sic_ifstream,
	for example, requires the absolute position n to come from tellg().

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,

	Defect reports

	The following behavior-changing defect	reports  were  applied	retroac-
     tively 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  failbit
     on failure
	LWG  136 C++98	    seekg could set the output stream	   only sets the
     input stream
	LWG 537 C++98	   the type of off was off_type&	   corrected  to
     off_type

See also
	tellg	   returns the input position indicator
		   (public member function)
	tellp	   returns the output position indicator
		   (public member function of std::basic_ostream<CharT,Traits>)
	seekp	   sets the output position indicator
		   (public member function of std::basic_ostream<CharT,Traits>)
	pubseekpos invokes seekpos()
		   (public     member	  function     of     std::basic_stream-
     buf<CharT,Traits>)
	seekpos    repositions the file position, using absolute addressing
	[virtual]   (virtual  protected  member  function  of	std::basic_file-
     buf<CharT,Traits>)

		   repositions	the  next  pointer in the input sequence, output
     sequence, or
	seekpos    both using absolute addressing
	[virtual]  (virtual protected member function of
		   std::basic_stringbuf<CharT,Traits,Allocator>)
	seekpos    repositions the next pointer in the	input  sequence,  output
     sequence, or
	[virtual]  both using absolute addressing
		   (virtual protected member function of std::strstreambuf)
	pubseekoff invokes seekoff()
		   (public     member	  function     of     std::basic_stream-
     buf<CharT,Traits>)
	seekoff    repositions the file position, using relative addressing
	[virtual]   (virtual  protected  member  function  of	std::basic_file-
     buf<CharT,Traits>)

		   repositions	the  next  pointer in the input sequence, output
     sequence, or
	seekoff    both, using relative addressing
	[virtual]  (virtual protected member function of
		   std::basic_stringbuf<CharT,Traits,Allocator>)
	seekoff    repositions the next pointer in the	input  sequence,  output
     sequence, or
	[virtual]  both, using relative addressing
		   (virtual protected member function of std::strstreambuf)

http://cppreference.com 	   2024.06.10	    std::basic_istream::seekg(3)

home | help