table of contents
        
      
      
    | std::strstreambuf::seekpos(3) | C++ Standard Libary | std::strstreambuf::seekpos(3) | 
NAME¶
std::strstreambuf::seekpos - std::strstreambuf::seekpos
Synopsis¶
protected:
  
   virtual pos_type seekpos( pos_type sp, (deprecated in C++98)
  
   std::ios_base::openmode which = (removed in C++26)
  
   std::ios_base::in |
  
   std::ios_base::out );
  
   Repositions std::basic_streambuf::gptr and/or std::basic_streambuf::pptr, if
  
   possible, to the position indicated by sp.
  
   If std::ios_base::in is set in which, attempts to reposition gptr() (the next
  
   pointer in the get area). If std::ios_base::out is set in which, attempts to
  
   reposition pptr() (the next pointer in the put area). If neither bit is set
    in
  
   which, the operation fails.
  
   Each next pointer is repositioned as follows:
  
   * If the next pointer is null, the operation fails.
  
   * Otherwise, the new offset newoff (of type off_type) is determined by
    calling
  
   sp.offset(). If newoff is negative, out of bounds of the buffer, or invalid,
    the
  
   operation fails.
  
   * Otherwise, the next pointer is assigned as if by gptr() = eback() + newoff
    or
  
   pptr() = pbase() + newoff.
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 constants:
  
   which -
  
   Constant Explanation
  
   in affect the input sequence
  
   out affect the output sequence
Return value¶
 The resultant offset converted to pos_type 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 <cstring>
  
   #include <iostream>
  
   #include <strstream>
  
   struct mybuf : std::strstreambuf
  
   {
  
   mybuf(const char* str) : std::strstreambuf(str, std::strlen(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::strstreambuf::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 available.
  
   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 retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   LWG 55 C++98 seekpos returned an undefined pos_type(off_type(-1))
  
   invalid stream position on failure is returned on failure
See also¶
 seekoff repositions the next pointer in the input sequence,
    output sequence, or
  
   [virtual] both, using relative addressing
  
   (virtual protected member function)
  
   repositions the next pointer in the input sequence, output sequence, or
  
   seekpos both using absolute addressing
  
   [virtual] (virtual protected member function of
    std::basic_streambuf<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 file position, using absolute addressing
  
   [virtual] (virtual protected member function of
    std::basic_filebuf<CharT,Traits>)
| 2024.06.10 | http://cppreference.com |