C++ IOS::tie() function



The C++ std::ios::tie() function is used to synchronize input and output streams. By default, cin and cout are tied, meaning cin automatically flushes cout before reading input, making the output is up-to-date. The tie() function allows you to manually tie or untie streams, enhancing control over the input-output behaviour.

For example, using cin.tie(nullptr) can improve performance by disabling the automatic flush, while cin.tie(&cout) re-establish the tie.

Syntax

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

ostream* tie() const;	
ostream* tie (ostream* tiestr);

Parameters

  • tiestr − It indicates an output stream object.

Return Value

It returns a pointer to the stream object tied before the call, or a null pointer in case the stream was not tied.

Exceptions

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

Data races

Accesses or modifies the stream object.

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

#include <iostream>
int main()
{
    std::cin.tie(&std::cout);
    std::cout << "Enter A Number: ";
    int x;
    std::cin >> x;
    std::cout << "Entered Number : " << x << std::endl;
    return 0;
}

Output

Following is the output of the above code −

Enter A Number: 121
Entered Number : 121

Example

Let's look at the following example, where cin is tied to cerr, ensuring that error message is visible to the user before they provide input.

#include <iostream>
int main()
{
    std::cin.tie(&std::cerr);
    std::cerr << "Error before input." << std::endl;
    std::cout << "Enter A Number: ";
    int x;
    std::cin >> x;
    std::cout << "Entered Number : " << x << std::endl;
    return 0;
}

Output

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

Error before input.
Enter A Number: 132
Entered Number : 132
ios.htm
Advertisements