C++ streambuf::setbuf() function
The C++ std::streambuf::setbuf() function is used to set the buffer for a stream buffer object. This function allows for the customization of the buffer used for input and output operations. It takes two parameters; a pointer to a character array, that acts as the buffer and its size.
Syntax
Following is the syntax for std::streambuf::setbuf() function.
streambuf* setbuf (char* s, streamsize n);
Parameters
- s, n − It indicates the arguments that may be used by overriding functions in derived classes.
Return Value
This function returns the this.
Exceptions
If an exception is thrown, the object is in a valid state.
Data races
if s,n both arguments are zero, it introduces no data races. Otherwise, unspecified.
Example 1
Let's look at the following example, where we are going to set teh custom buffer of 12bytes for the std::cin stream.
#include <iostream>
#include <streambuf>
#include <string>
int main() {
char x[12];
std::streambuf * y = std::cin.rdbuf();
y -> pubsetbuf(x, sizeof(x));
std::string input = "Welcome.";
std::cout << "Input : " << input << std::endl;
std::cout << "Buffer size: " << sizeof(x) << " bytes" << std::endl;
return 0;
}
Output
Output of the above code is as follows −
Input : Welcome. Buffer size: 12 bytes
Example 2
Consider the following example, where we are going to set the buffer to null.
#include <iostream>
#include <streambuf>
int main() {
std::streambuf * x = std::cout.rdbuf();
x -> pubsetbuf(NULL, 0);
std::cout << "Buffer disabled." << std::endl;
return 0;
}
Output
Following is the output of the above code −
Buffer disabled.
streambuf.htm