Scroll to navigation

std::basic_fstream::basic_fstream(3) C++ Standard Libary std::basic_fstream::basic_fstream(3)

NAME

std::basic_fstream::basic_fstream - std::basic_fstream::basic_fstream

Synopsis


basic_fstream(); (1)
explicit basic_fstream( const char* filename,


std::ios_base::openmode mode (2)


= std::ios_base::in |
std::ios_base::out );
explicit basic_fstream( const std::filesystem::path::value_type*
filename,


std::ios_base::openmode mode (3) (since C++17)


= std::ios_base::in |
std::ios_base::out );
explicit basic_fstream( const std::string& filename,


std::ios_base::openmode mode (4) (since C++11)


= std::ios_base::in |
std::ios_base::out );
template< class FsPath >


explicit basic_fstream( const FsPath& filename,
std::ios_base::openmode mode (5) (since C++17)


= std::ios_base::in |
std::ios_base::out );
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 member.
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() pointer
in the base class.
7) The copy-constructor is deleted: this class is not copyable.

Parameters


filename - the name of the file to be opened
specifies stream open mode. Following constants and bit-wise OR between
them may be used:


Constant Explanation
app seek to the end of stream before each write
mode - binary open in binary mode
in open for reading
out open for writing
trunc discard the contents of the stream when opening
ate seek to the end of stream immediately after open
noreplace (C++23) open in exclusive mode
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
the default argument of mode in overload
LWG 460 C++98 (2) added
was missing (it is present in the synopsis)
LWG 3430 C++17 std::filesystem::path overload led to avoided by making it
unwanted conversions a template

See also


open opens a file and associates it with the stream
(public member function)
open opens a file and configures it as the associated character sequence
(public member function of std::basic_filebuf<CharT,Traits>)
set_rdbuf replaces the rdbuf without clearing its error state
(protected member function)
constructor constructs the object
(public member function of std::basic_iostream<CharT,Traits>)

2024.06.10 http://cppreference.com