C++ streambuf::pubsync() function



The C++ std::streambuf::pubsync() function is used to synchronize the buffer with the associated Input/Output sequence. Typically, this function calls the protected virtual function sync(), which handles the actual synchronization.

If the sync() is succeeds it returns 0, otherwise it returns -1.

Syntax

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

int pubsync();

Parameters

It does not accept any parameter.

Return Value

It returns the default definition of sync in streambuf always returns zero, indicating success.

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

#include <iostream>
#include <streambuf>
#include <sstream>
int main() {
   std::stringstream a;
   a << "Hello";
   std::streambuf * b = a.rdbuf();
   int result = b -> pubsync();
   std::cout << "Result : " << result << std::endl;
   return 0;
}

Output

Output of the above code is as follows −

Result : 0

Example 2

Consider the following example, where we are going to perform the synchronization after multiple insertion.

#include <iostream>
#include <sstream>
int main() {
   std::ostringstream x;
   x << "A ";
   x << "B ";
   x << "C ";
   int result = x.rdbuf() -> pubsync();
   std::cout << "Result: " << result << std::endl;
   std::cout << "Buffer content: " << x.str() << std::endl;
   return 0;
}

Output

Following is the output of the above code −

Result: 0
Buffer content: A B C

Example 3

Let's look at the following example, where we are going to check the pubsync() on std::cin.

#include <iostream>
int main() {
   std::streambuf * pbuf = std::cin.rdbuf();
   int a = pbuf -> pubsync();
   std::cout << "Result : " << a << std::endl;
   return 0;
}

Output

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

Result : 0
streambuf.htm
Advertisements