void open( const char *filename,
           ios_base::openmode mode = ios_base::in|ios_base::out );
void open( const std::filesystem::path::value_type *filename,
           ios_base::openmode mode = ios_base::in|ios_base::out );
(2) (since C++17)
void open( const std::string &filename,                                  
           ios_base::openmode mode = ios_base::in|ios_base::out );
(3) (since C++11)
void open( const std::filesystem::path &filename,                                  
           ios_base::openmode mode = ios_base::in|ios_base::out );
(4) (since C++17)

Opens and associates the file with name filename with the file stream.

Calls setstate(failbit) on failure.

Calls clear() on success. (since C++11)
1-2) Effectively calls rdbuf()->open(filename, mode). (see std::basic_filebuf::open for the details on the effects of that call). Overload (2) is only provided if std::filesystem::path::value_type is not char. (since C++17)
3-4) Effectively calls (1-2) as if by open(filename.c_str(), mode).


filename - the name of the file to be opened
mode - specifies stream open mode. It is bitmask type, the following constants are defined:
Constant Explanation
app seek to the end of stream before each write
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

Return value



#include <string>
#include <fstream>
#include <iostream>
int main()
    std::string filename = "example.123";
    std::fstream fs;
    if (!fs.is_open())
        fs.open(filename, std::ios::out); // create file
    std::cout << std::boolalpha;
    std::cout << "fs.is_open() = " << fs.is_open() << '\n';
    std::cout << "fs.good() = " << fs.good() << '\n';

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 22 C++98 it was unclear how error state changes upon a successful open the error state is unchanged

See also

checks if the stream has an associated file
(public member function)
closes the associated file
(public member function)
opens a file and configures it as the associated character sequence
(public member function of std::basic_filebuf<CharT,Traits>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.