# std::basic_ios::tie

From cppreference.com
< cpp‎ | io‎ | basic ios

std::basic_ostream<CharT,Traits>* tie() const; | (1) |
std::basic_ostream<CharT,Traits>* tie( std::basic_ostream<CharT,Traits>* str ); | (2) |

Manages the tied stream. A tied stream is an output stream which is synchronized with the sequence controlled by the stream buffer (rdbuf()), that is, flush() is called on the tied stream before any input/output operation on *this.

1) Returns the current tied stream. If there is no tied stream, NULL is returned.
2) Sets the current tied stream to `str`. Returns the tied stream before the operation. If there is no tied stream, NULL is returned.

### Parameters

str | - | an output stream to set as the tied stream

### Return value

The tied stream, or NULL if there was no tied stream.

### Exceptions

(none)

### Notes

By default, the standard streams `cin` and `cerr` are tied to `cout`. Similarly, their wide counterparts `wcin` and `wcerr` are tied to `wcout`.

### Example

Run this code

    #include <iostream>
    #include <fstream>
    #include <string>

    int main()
    {
        std::ofstream os("test.txt");
        std::ifstream is("test.txt");
        std::string value("0");

        os << "Hello";
        is >> value;

        std::cout << "Result before tie(): \"" << value << "\"\n";
        is.clear();
        is.tie(&os);

        is >> value;

        std::cout << "Result after tie(): \"" << value << "\"\n";
    }

Output:

    Result before tie(): "0"
    Result after tie(): "Hello"

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_ios/tie&oldid=82733"