Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_streambuf::setp(3) C++ Standard Libarystd::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,
       after 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 <iostream>
	#include <array>

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

	    ArrayedStreamBuffer()  :  buffer_{}	// value-initialize buffer_ to
       all zeroes
	    {
		Base::setp(buffer_.begin(), buffer_.end());  //	 set  std::ba-
       sic_streambuf
		    // put area	pointers to work with 'buffer_'
	    }

	    void print_buffer()
	    {
		for (const auto& i: buffer_) {
		    if (i == 0)	{
			std::cout << "\\0";
		    } else {
			std::cout << i;
		    }
		    std::cout << ' ';
		}
		std::cout << '\n';
	    }

	private:
	    std::array<char_type, SIZE>	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
       sequence
	       (protected member function)

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::basic_streambuf::setp&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help