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.
SyntaxFollowing is the syntax for std::ios::tie() function.
ostream* tie() const; ostream* tie (ostream* tiestr);Parameters
It returns a pointer to the stream object tied before the call, or a null pointer in case the stream was not tied.
ExceptionsIf an exception is thrown, the stream is in a valid state.
Data racesAccesses or modifies the stream object.
Concurrent access to the same stream object may cause data races.
ExampleIn 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 : 121Example
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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4