C++ streambuf::sputc() function



The C++ std::streambuf::sputc() function is used to insert a single character into the output sequence of the buffer. It takes a character as an argument and append it to the buffer. If successful, it returns the inserted character otherwise, it returns traits_type::eof() to indicate an error.

Syntax

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

int sputc (char c);

Parameters

  • c − It indicates the character to be put.

Return Value

It returns for successive case, the character put is returned, as a value of type int. Otherwise, it returns the end-of-file value (EOF) to signal a failure.

Exceptions

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

Data races

Example 1

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

#include <iostream>
#include <sstream>
int main() {
   std::string str = "AUTORIALSPOINT";
   std::stringbuf x(str, std::ios::in | std::ios::out);
   x.sputc('T');
   std::cout << x.str();
   return 0;
}

Output

Output of the above code is as follows −

TUTORIALSPOINT

Example 2

Consider the following example, where we are going to use the sputc() function to modify the characters in the loop.

#include <iostream>
#include <sstream>
int main() {
   std::string str = "Hello";
   std::stringbuf y(str, std::ios::in | std::ios::out);
   for (int i = 0; i < 5; ++i) {
      y.sputc('1');
   }
   std::cout << y.str();
   return 0;
}

Output

Following is the output of the above code −

11111

Example 3

Let's look at the following example, where we are going to use the pubseekpos() along with the sputc().

#include <iostream>
#include <sstream>
int main() {
   std::string str = "Hi,Vanakam";
   std::stringbuf x(str, std::ios::in | std::ios::out);
   x.pubseekpos(2);
   x.sputc(' ');
   std::cout << x.str();
   return 0;
}

Output

If we run the above code it will generate the following output −

Hi Vanakam
streambuf.htm