home | help
std::basic_...buf::seekpos(3)  C++ Standard Libary std::basic_...buf::seekpos(3)

NAME
     std::basic_stringbuf::seekpos - std::basic_stringbuf::seekpos

Synopsis
	protected:

	virtual pos_type seekpos( pos_type sp,

				  std::ios_base::openmode	  which        =
     std::ios_base::in |
	std::ios_base::out );

	Repositions   std::basic_streambuf::gptr    and/or    std::basic_stream-
     buf::pptr, if
	possible, to the position indicated by sp.

	Effectively executes seekoff(off_type(sp), std::ios_base::beg, which).

Parameters
	sp    - stream position, such as one obtained by seekoff() or seekpos()
		defines  whether  the  input  sequences, the output sequence, or
     both are
		affected. It can be one or a combination of the  following  con-
     stants:
	which -
		Constant Explanation
		in	 affect the input sequence
		out	 affect the output sequence

Return value
	sp on success or pos_type(off_type(-1)) on failure.

Notes
	seekpos()  is  called  by  std::basic_streambuf::pubseekpos(),	which is
     called by the
	single-argument versions of std::basic_istream::seekg() and
	std::basic_ostream::seekp().

Example
     // Run this code

      #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);
      }

Output:
      Before  seekpos(2), size of the get area is 5 with 5 read positions avail-
     able.
      seekpos() returns 2.
      After the call, size of the get area is 5 with 3 read positions available.

	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
			   static constant members of std::ios_base
	LWG 375 C++98	   were 				    corrected
			   misspecified as members of
			   std::basic_ios
	LWG 564 C++98	   if was unclear how to  reposition  gptr     they  are
     repositioned by
			   and/or pptr				    seekoff()

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

	seekpos    repositions the next pointer in the	input  sequence,  output
     sequence, or
	[virtual]  both using absolute addressing
		   (virtual protected member function of std::strstreambuf)

http://cppreference.com 	   2024.06.10	   std::basic_...buf::seekpos(3)

home | help