Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::basic_stringbuf<CharT,Traits,Allocator>::seekpos

      From cppreference.com
      <cpp‎ |io‎ |basic stringbuf
       
       
       
       
      protected:

      virtual pos_type seekpos( pos_type sp,

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

      Repositionsstd::basic_streambuf::gptr and/orstd::basic_streambuf::pptr, if possible, to the position indicated bysp.

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

      Contents

      [edit]Parameters

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

      [edit]Return value

      sp on success orpos_type(off_type(-1)) on failure.

      [edit]Notes

      seekpos() is called bystd::basic_streambuf::pubseekpos(), which is called by the single-argument versions ofstd::basic_istream::seekg() andstd::basic_ostream::seekp().

      [edit]Example

      Run this code
      #include <sstream>#include <iostream> struct mybuf:std::stringbuf{    mybuf(conststd::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 available.seekpos() returns 2.After the call, size of the get area is 5 with 3 read positions available.

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 375C++98static constant members ofstd::ios_base were
      misspecified as members ofstd::basic_ios
      corrected
      LWG 564C++98if was unclear how to repositiongptr and/orpptrthey are repositioned byseekoff()

      [edit]See also

      invokesseekpos()
      (public member function ofstd::basic_streambuf<CharT,Traits>)[edit]
      [virtual]
      repositions the next pointer in the input sequence, output sequence, or both, using relative addressing
      (virtual protected member function)[edit]
      [virtual]
      repositions the file position, using absolute addressing
      (virtual protected member function ofstd::basic_filebuf<CharT,Traits>)[edit]
      [virtual]
      repositions the next pointer in the input sequence, output sequence, or both using absolute addressing
      (virtual protected member function ofstd::strstreambuf)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_stringbuf/seekpos&oldid=148676"

      [8]ページ先頭

      ©2009-2025 Movatter.jp