C++ streambuf::sputbackc() function



The C++ std::streambuf::sputbackc() function is used to put a character back into the input sequence of a stream buffer. This function is often used in custom stream manipulations when a character has been read but needs to be unread.

This function returns the character that was put back on success or traits::eof() if the operation fails.

Syntax

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

int_type sputbackc (char_type c);

Parameters

  • c − Character to be put back.

Return Value

This function returns the value of the character put back, as a value of type int.

Exceptions

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

Data races

It modifies the stream buffer object.

Example 1

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

#include <iostream>
#include <sstream>
int main() {
   std::stringbuf a("Welcome");
   char b = a.sbumpc();
   std::cout << "First character: " << b << std::endl;
   a.sputbackc(b);
   char c = a.sbumpc();
   std::cout << "Character after putback: " << c << std::endl;
   return 0;
}

Output

Output of the above code is as follows −

First character: W
Character after putback: W

Example 2

Consider the following example, where we are going to replace the first character by using the sputbackc() function.

#include <iostream>
#include <sstream>
int main() {
   std::stringbuf x("Hi");
   char y = x.sbumpc();
   std::cout << "First character: " << y << std::endl;
   x.sputbackc('A');
   char z = x.sbumpc();
   std::cout << "Character after putback: " << z << std::endl;
   return 0;
}

Output

Following is the output of the above code −

First character: H
Character after putback: A
streambuf.htm