# std::basic_ifstream<CharT,Traits>::swap

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

void swap( basic_ifstream& other ); |  | (since C++11)

Exchanges the state of the stream with those of `other`.

This is done by calling basic_istream<CharT, Traits>::swap(other) and rdbuf()->swap(other.rdbuf()).

### Parameters

other | - | stream to exchange the state with

### Return value

(none)

### Exceptions

May throw implementation-defined exceptions.

### Example

Run this code

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

    bool create_stream(std::fstream& fs, const std::string& path) {
        try {
            std::fstream fst { path, std::ios::trunc | std::ios::in | std::ios::out };
            if (fst.is_open()) {
                fst.swap( fs );
                return true;
            }
        } catch (...) {
            std::cout << "Exception!\n";
        }
        return false;
    }

    void use_stream(std::fstream& fs) {
        fs.seekg(0);
        std::string data;
        fs >> data;
        std::cout << "data: " << std::quoted(data) << '\n';
    }

    int main() {
        std::fstream fs;
        std::string path = "/tmp/test_file.txt";
        if (create_stream(fs, path)) {
            fs.write(path.c_str(), path.length());
            use_stream(fs);
        }
    }

Possible output:

    data: "/tmp/test_file.txt"

### See also

operator= (C++11) | moves the file stream (public member function)
swap (C++11) | swaps two `basic_filebuf` objects (public member function of `std::basic_filebuf<CharT,Traits>`)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_ifstream/swap&oldid=50842"