C++ streambuf::pubsetbuf() function



The C++ std::streambuf::pubsetbuf() function is used to set the buffer for a stream buffer object. It allows to specify a user-defined buffer and its size for input and output operations.

This function is often used to optimize I/O performance by providing a custom buffer, especially in scenarios where the default buffer may not be suitable.

Syntax

Following is the syntax for std::streambuf::pubsetbuf() function.

	
pubsetbuf( char_type* s, std::streamsize n )

Parameters

  • s − It indicates the pointer to char-type for this instantiation.
  • n − It indicates the size of the buffer.

Return Value

This function always returns this.

Exceptions

If an exception is thrown, the stream buffer is in a valid state.

Data races

Both this call and further calls to other member functions may access and/or modify the first n characters in the array pointed by s.

Example 1

In the following example, we are going to consider the basic usage of the pubsetbuf() function.

#include <iostream>
#include <sstream>
int main() {
   std::stringstream a;
   char customBuffer[15];
   a.rdbuf() -> pubsetbuf(customBuffer, sizeof(customBuffer));
   a << "Welcome";
   std::cout << "Result : " << a.str() << std::endl;
   return 0;
}

Output

Output of the above code is as follows −

Result : Welcome ..

Example 2

Consider the following example, where we are going to set the buffer using the pubsetbuf() for the std::basic_stringstream.

#include <iostream>
#include <sstream>
int main() {
   std::basic_stringstream < char > bss;
   char customBuffer[10];
   bss.rdbuf() -> pubsetbuf(customBuffer, sizeof(customBuffer));
   bss << "Hi";
   std::cout << "Result : " << bss.str() << std::endl;
   return 0;
}

Output

Following is the output of the above code −

Result : HiP9e..
streambuf.htm
Advertisements