std::basic_fstream<CharT,Traits>::basic_fstream
From cppreference.com
< cpp | io | basic fstream
basic_fstream(); |
(1) | |
explicit basic_fstream(
const
char
* filename,
= std::ios_base::in | std::ios_base::out ) ; |
(2) | |
explicit basic_fstream(
const std::
filesystem
::
path
::
value_type
* filename,
= std::ios_base::in | std::ios_base::out ) ; |
(3) | (since C++17) |
explicit basic_fstream(
const
std::string
& filename,
= std::ios_base::in | std::ios_base::out ) ; |
(4) | (since C++11) |
template
<
class FsPath >
explicit basic_fstream(
const FsPath& filename, |
(5) | (since C++17) |
basic_fstream( basic_fstream&& other ); |
(6) | (since C++11) |
basic_fstream(
const basic_fstream& rhs )
= delete;
|
(7) | (since C++11) |
Constructs new file stream.
1) Default constructor: constructs a stream that is not associated with a file: default-constructs the std::basic_filebuf and constructs the base with the pointer to this default-constructed std::basic_filebuf
2,3) First, performs the same steps as the default constructor, then associates the stream with a file by calling
rdbuf()->open(filename, mode)
(see std::basic_filebuf::open for the details on the effects of that call). If the
open()
call returns a null pointer, sets setstate(failbit).
Overload (3) is only provided if
std::filesystem::path::value_type
is not char
(since C++17)
4,5) Same as basic_fstream(filename.c_str(), mode).
(5) participates in overload resolution only if
FsPath
is std::filesystem::path.
(since C++17)
6) Move constructor. First, move-constructs the base class from other (which does not affect the
rdbuf()
pointer), then move-constructs the std::basic_filebuf member, then calls this->set_rdbuf() to install the new basic_filebuf
as the rdbuf()
7) The copy-constructor is deleted: this class is not copyable.
Parameters
filename | - | the name of the file to be opened | ||||||||||||||||
mode | - | specifies stream open mode. Following constants and bit-wise OR between them may be used:
|
||||||||||||||||
other | - | another file stream to use as source |
Example
Run this code
#include <fstream> #include <string> #include <utility> int main() { std::fstream f0; std::fstream f1("test.bin", std::ios::binary); std::string name = "example.txt"; std::fstream f2(name); std::fstream f3(std::move(f1)); }
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 460 | C++98 | the default argument of mode in overload (2)
was missing (it is present in the synopsis |
added |
LWG 3430 | C++17 | std::filesystem::path overload led to unwanted conversions | avoided by making it a template |
See also
opens a file and associates it with the stream (public member function) |
|
opens a file and configures it as the associated character sequence (public member function of std::basic_filebuf<CharT,Traits> ) |
|
replaces the rdbuf without clearing its error state (protected member function) |
|
constructs the object (public member function of std::basic_iostream<CharT,Traits> ) |