C++ streambuf::in_avail() function



The C++ std::streambuf::in_avail() function is used to determine the number of characters available in the input buffer that can be read without blocking. It returns an integer value indicating the number of characters ready for immediate consumption.

Syntax

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

streamsize in_avail();

Parameters

It does not accept any parameter.

Return Value

This function returns the number of characters available to read.

Exceptions

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

Data races

The member function may modify the stream buffer object.

Example 1

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

#include <iostream>
#include <streambuf>
#include <sstream>
int main() {
   std::string x = "Welcome";
   std::stringbuf buffer(x);
   std::cout << "Result : " << buffer.in_avail() << std::endl;
   return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

Result : 7

Example 2

Consider the following example, where we are going to use the in_avail() on the empty buffer.

#include <iostream>
#include <sstream>
int main() {
   std::stringbuf a;
   std::streamsize b = a.in_avail();
   std::cout << "Result : " << b << std::endl;
   return 0;
}

Output

Following is the output of the above code −

Result : 0

Example 3

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

#include <iostream>
#include <sstream>
int main() {
   std::stringbuf a("TutorialsPoint");
   a.pubseekpos(3);
   std::streamsize b = a.in_avail();
   std::cout << "Result : " << b << std::endl;
   return 0;
}

Output

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

Result : 11
streambuf.htm
Advertisements