std::basic_fstream::swap(3)

NAME
std::basic_fstream::swap - std::basic_fstream::swap

Synopsis
   void swap( basic_fstream& other ); (since C++11)
   Exchanges the state of the stream with those of other.
   This is done by calling basic_iostream<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= moves the file stream
   (C++11) (public member function)
   swap swaps two basic_filebuf objects
   (C++11) (public member function of std::basic_filebuf<CharT,Traits>)