std::basic_fstream<CharT,Traits>::open
From cppreference.com
 
 
 < cpp | io | basic fstream 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Input/output library 
 
 
 
 
 
 
 
 
 
 
 
 
 Print functions (C++23)
 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)
std::basic_fstream 
 
 
 
 
 
 Member functions
(C++11)
(C++11)
(C++26)
 File operations
basic_fstream::open
 Non-member functions
(C++11)
void open( const char* filename,
= std::ios_base::in | std::ios_base::out );
 (1) 
 
= std::ios_base::in | std::ios_base::out );
void open( const std::filesystem::path::value_type* filename,
= std::ios_base::in | std::ios_base::out );
 (2) 
 (since C++17) 
= std::ios_base::in | std::ios_base::out );
void open( const std::string & filename,
= std::ios_base::in | std::ios_base::out );
 (3) 
 (since C++11) 
= std::ios_base::in | std::ios_base::out );
void open( const std::filesystem::path & filename,
= std::ios_base::in | std::ios_base::out );
 (4) 
 (since C++17) 
= std::ios_base::in | std::ios_base::out );
Opens and associates the file with name filename with the file stream.
Calls clear() on success. Calls setstate(failbit) on failure.
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). 
Contents
[edit] Parameters
 filename
 -
 the name of the file to be opened
 mode
 -
 specifies stream open mode. It is a BitmaskType, 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
 noreplace (C++23)
 open in exclusive mode
[edit] Example
Run this code
#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'; }
[edit] 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 | 
| LWG 409 | C++98 | the error state was unchanged upon a successful open | it is cleared[1] | 
| LWG 460 | C++98 | the default argument of mode in overload (1) was missing (it is present in the synopsis) | added | 
- ↑ The resolution of LWG issue #22 is overridden.