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
Advertisements