home | help
std::basic_fstream::swap(3)    C++ Standard Libary   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 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>)

http://cppreference.com 	   2024.06.10	     std::basic_fstream::swap(3)

home | help