C++ streambuf::sbumpc() function



The C++ std::streambuf::sbumpc() function is used to extract and return the next character from the input sequence, advancing the input pointer to the subsequent character. If the input sequence is empty, it returns trauts_type::eof(), indicating the end of the file or stream.

Syntax

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

int_type sbumpc();

Parameters

It does not accept any parameter.

Return Value

It returns the character at the current position of the controlled input sequence before the call, converted to a value of type int_type using member traits_type::to_int_type.

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 sbumpc() function.

#include <iostream>
#include <sstream>
int main() {
   std::stringstream a("Welcome");
   std::streambuf * b = a.rdbuf();
   char c;
   while ((c = b -> sbumpc()) != EOF) {
      std::cout << c << ' ';
   }
   return 0;
}

Output

Output of the above code is as follows −

W e l c o m e 

Example 2

Consider the following example, where we are going to use the sbumpc() function to count the total no of characters.

#include <iostream>
#include <sstream>
int main() {
   std::istringstream x("Tutorialspoint");
   std::streambuf * y = x.rdbuf();
   int z = 0;
   while (y -> sbumpc() != std::char_traits < char > ::eof()) {
      z++;
   }
   std::cout << "Result : " << z << std::endl;
   return 0;
}

Output

Following is the output of the above code −

Result : 14

Example 3

Let's look at the following example, where we are going to skip the initial 11 characters from the input sequence and printing the remaining characters.

#include <iostream>
#include <sstream>
int main() {
   std::istringstream x("Welcome To TutorialsPoint");
   std::streambuf * y = x.rdbuf();
   for (int a = 0; a < 11; ++a) {
      y -> sbumpc();
   }
   char z;
   while ((z = y -> sbumpc()) != std::char_traits < char > ::eof()) {
      std::cout << z;
   }
   return 0;
}

Output

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

TutorialsPoint
streambuf.htm
Advertisements