std::basic_fstream<CharT,Traits>::open
From cppreference.com
< cpp | io | basic fstream
| void open( const char* filename, = std::ios_base::in | std::ios_base::out ); |
(1) | |
| void open( const std::filesystem::path::value_type* filename, = std::ios_base::in | std::ios_base::out ); |
(2) | (C++17以降) |
| void open( const std::string& filename, = std::ios_base::in | std::ios_base::out ); |
(3) | (C++11以降) |
| void open( const std::filesystem::path& filename, = std::ios_base::in | std::ios_base::out ); |
(4) | (C++17以降) |
指定されたファイル名 filename を持つファイルをファイルストリームに関連付けて開きます。
成功時には clear() を呼び出します。失敗時には setstate(failbit) を呼び出します。
1,2) 実質的に rdbuf()->open(filename, mode) を呼び出します(その呼び出しの効果の詳細については、std::basic_filebuf::open を参照してください)。オーバーロード (2) は、
std::filesystem::path::value_type が char ではない場合にのみ提供されます。(C++17以降)3,4) 実質的に (1,2) を open(filename.c_str(), mode) で呼び出すかのように処理します。
目次 |
[編集] パラメータ
| filename | - | 開くファイルの名前 | ||||||||||||||||
| モード | - | ストリームのオープンモードを指定します。これは BitmaskType であり、以下の定数が定義されています。
|
[編集] 戻り値
(なし)
[編集] 例
このコードを実行
#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'; }
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 22 | C++98 | 正常なオープン時にエラー状態がどのように変化するかが不明確であった | エラー状態は変更されない |
| LWG 409 | C++98 | 正常なオープン時にエラー状態が変更されなかった | クリアされる[1] |
| LWG 460 | C++98 | オーバーロード (1) の mode のデフォルト引数 が欠落していました(シノプシスには存在します)。 |
追加された |
- ↑ LWG問題#22の解決は上書きされます。
[編集] 関連項目
| ストリームに関連付けられたファイルがあるかチェックする (public member function) | |
| 関連付けられたファイルを閉じる (public member function) | |
| ファイルをオープンし、関連付けられた文字シーケンスとして設定します。 ( std::basic_filebuf<CharT,Traits> のメンバ関数) |