C++ ios::Unitbuf() Function



The C++ std::ios::unitbuf() function is a manipulator that sets the streams unit buffer mode. When this function is invoked, the stream is automatically flushed after each output operation, ensuring that data is immediately written to the output device.

This function is useful in real-time applications where immediate feedback is necessary, such as logging or interactive user interfaces.

Syntax

Following is the syntax for std::ios::unitbuf() function.

ios_base& unitbuf (ios_base& str);

Parameters

  • str − It indicates the stream object whose format flag is affected.

Return Value

This function returns the Argument str.

Exceptions

If an exception is thrown, str is in a valid state.

Data races

It modifies str. Concurrent access to the same stream object may cause data races.

Example

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

#include <iostream>
int main()
{
    std::cout << std::unitbuf;
    std::cout << "Welcome, ";
    std::cout << "To Everyone.!" << std::endl;
    std::cout << std::nounitbuf;
    return 0;
}

Output

Output of the above code is as follows −

Welcome, To Everyone.!

Example

Let's look at the following example, where unitbuf() causes each output to be flushed, making sure each count value appears on the screen every second as intended.

#include <iostream>
#include <chrono>
#include <thread>
int main()
{
    std::cout << std::unitbuf;
    for (int x = 1; x < 4; ++x) {
        std::cout << "Count: " << x << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    std::cout << std::nounitbuf;
    return 0;
}

Output

Following is the output of the above code −

Count: 1
Count: 2
Count: 3
ios.htm
Advertisements