I/O manipulators | ||||
Print functions(C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
Synchronized Output | ||||
(C++20) | ||||
Types | ||||
Error category interface | ||||
(C++11) | ||||
(C++11) |
Member functions | ||||
(C++11) | ||||
basic_fstream::swap (C++11) | ||||
(C++26) | ||||
File operations | ||||
Non-member functions | ||||
(C++11) |
void swap( basic_fstream& other); | (since C++11) | |
Exchanges the state of the stream with those ofother.
This is done by callingbasic_iostream<CharT, Traits>::swap(other) andrdbuf()->swap(other.rdbuf()).
Contents |
other | - | stream to exchange the state with |
(none)
May throw implementation-defined exceptions.
#include <fstream>#include <iomanip>#include <iostream>#include <string> bool create_stream(std::fstream& fs,conststd::string& path){try{std::fstream ts{path, ts.trunc| ts.in| ts.out};if(ts.is_open()){ ts.swap(fs);// stream objects are not copyablereturntrue;}}catch(...){std::cout<<"Exception!\n";}returnfalse;} 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"
(C++11) | moves the file stream (public member function)[edit] |
(C++11) | swaps twobasic_filebuf objects(public member function of std::basic_filebuf<CharT,Traits> )[edit] |