Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::basic_streambuf<CharT,Traits>::setg

      From cppreference.com
      <cpp‎ |io‎ |basic streambuf
       
       
       
      std::basic_streambuf
       
      protected:
      void setg( char_type* gbeg, char_type* gcurr, char_type* gend);

      Sets the values of the pointers defining the get area.

      After the call,eback()== gbeg,gptr()== gcurr andegptr()== gend are alltrue.

      If any of[gbeggend),[gbeggcurr) and[gcurrgend) is not avalid range, the behavior is undefined.

      Contents

      [edit]Parameters

      gbeg - pointer to the new beginning of the get area
      gcurr - pointer to the new current character (get pointer) in the get area
      gend - pointer to the new end of the get area

      [edit]Example

      [edit]
      Run this code
      #include <iostream>#include <sstream> class null_filter_buf:publicstd::streambuf{std::streambuf* src;char ch;// single-byte bufferprotected:int underflow(){        traits_type::int_type i;while((i= src->sbumpc())=='\0');// skip zeroesif(!traits_type::eq_int_type(i, traits_type::eof())){            ch= traits_type::to_char_type(i);            setg(&ch,&ch,&ch+1);// make one read position available}return i;}public:    null_filter_buf(std::streambuf* buf): src(buf){        setg(&ch,&ch+1,&ch+1);// buffer is initially full}}; void filtered_read(std::istream& in){std::streambuf* orig= in.rdbuf();    null_filter_buf buf(orig);    in.rdbuf(&buf);for(char c; in.get(c);)std::cout<< c;    in.rdbuf(orig);} int main(){char a[]="This i\0s\0an e\0\0\0xample";std::istringstream in(std::string(std::begin(a),std::end(a)));    filtered_read(in);}

      Output:

      This is an example

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      LWG 4023C++98setg did not require the input sequence to be a valid rangerequires

      [edit]See also

      repositions the beginning, next, and end pointers of the output sequence
      (protected member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_streambuf/setg&oldid=172939"

      [8]ページ先頭

      ©2009-2025 Movatter.jp