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..