
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
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