std::basic_fstream<CharT,Traits>::open

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

# Declarations

void open( const char* filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );
void open( const std::filesystem::path::value_type* filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );

(since C++17)

void open( const std::string& filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );

(since C++11)

void open( const std::filesystem::path& filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );

(since C++17)

# Parameters

# Return value

(none)

# Example

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

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 22C++98it was unclear how error state changes upon a successful openthe error state is unchanged
LWG 409C++98the error state was unchanged upon a successful openit is cleared[1]
LWG 460C++98the default argument of mode in overload (1)was missing (it is present in the synopsis)added

# See also