home | help
std::basic_streambuf::setp(3)  C++ Standard Libary std::basic_streambuf::setp(3)

NAME
     std::basic_streambuf::setp - std::basic_streambuf::setp

Synopsis
	protected:
	void setp( char_type* pbeg, char_type* pend );

	Sets the values of the pointers defining the put area. Specifically, af-
     ter the call
	pbase() == pbeg, pptr() == pbeg, epptr() == pend.

Parameters
	pbeg - pointer to the new beginning of the put area
	pend - pointer to the new end of the put area

Return value
	(none)

Example
     // Run this code

      #include <array>
      #include <cstddef>
      #include <iostream>

      // Buffer for std::ostream implemented by std::array
      template<std::size_t size, class CharT = char>
      struct ArrayedStreamBuffer : std::basic_streambuf<CharT>
      {
	  using Base = std::basic_streambuf<CharT>;
	  using char_type = typename Base::char_type;

	  ArrayedStreamBuffer()
	  {
	      // put area pointers to work with 'buffer'
	      Base::setp(buffer.data(), buffer.data() + size);
	  }

	  void print_buffer()
	  {
	      for (char_type i : buffer)
	      {
		  if (i == 0)
		      std::cout << "\\0";
		  else
		      std::cout << i;
		  std::cout << ' ';
	      }
	      std::cout << '\n';
	  }

      private:
	  std::array<char_type, size> buffer{}; // value-initialize buffer
      };

      int main()
      {
	  ArrayedStreamBuffer<10> streambuf;
	  std::ostream stream(&streambuf);

	  stream << "hello";
	  stream << ",";

	  streambuf.print_buffer();
      }

Output:
      h e l l o , \0 \0 \0 \0

See also
	setg  repositions the beginning, next, and end pointers of the input se-
     quence
	     (protected member function)

http://cppreference.com 	   2024.06.10	   std::basic_streambuf::setp(3)

home | help