std::basic_ofstream::swap(3)

NAME
std::basic_ofstream::swap - std::basic_ofstream::swap

Synopsis
   void swap( basic_ofstream& other ); (since C++11)
   Exchanges the state of the stream with those of other.
   This is done by calling basic_ostream<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 ts{path, ts.trunc | ts.in | ts.out};
         if (ts.is_open())
         {
             ts.swap(fs); // stream objects are not copyable
             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>)