table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::basic_streambuf::setg(3) | C++ Standard Libary | std::basic_streambuf::setg(3) | 
NAME¶
std::basic_streambuf::setg - std::basic_streambuf::setg
Synopsis¶
 protected:
  
   void setg( char_type* gbeg, char_type* gcurr, char_type* gend );
  
   Sets the values of the pointers defining the get area. Specifically, after
    the call
  
   eback() == gbeg, gptr() == gcurr, egptr() == gend.
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
Return value¶
(none)
Example¶
// Run this code
  
   #include <iostream>
  
   #include <sstream>
  
   class null_filter_buf : public std::streambuf
  
   {
  
   std::streambuf* src;
  
   char ch; // single-byte buffer
  
   protected:
  
   int underflow()
  
   {
  
   traits_type::int_type i;
  
   while ((i = src->sbumpc()) == '\0')
  
   ; // skip zeroes
  
   if (!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
See also¶
 setp repositions the beginning, next, and end pointers of the
    output sequence
  
   (protected member function)
| 2024.06.10 | http://cppreference.com |