std::basic_filebuf<CharT,Traits>::open
提供: cppreference.com
<tbody>
</tbody>
std::basic_filebuf<CharT, Traits>* open( const char* s, std::ios_base::openmode mode ) |
(1) | |
std::basic_filebuf<CharT, Traits>* open( const std::string& str, std::ios_base::openmode mode ) |
(2) | (C++11以上) |
std::basic_filebuf<CharT, Traits>* open( const std::filesystem::path& p, std::ios_base::openmode mode ) |
(3) | (C++17以上) |
std::basic_filebuf<CharT, Traits>* open( const std::filesystem::path::value_type* s, std::ios_base::openmode mode ) |
(4) | (C++17以上) |
指定された名前 (オーバーロードによって s、p.c_str() (C++17以上) または str.c_str()) を持つファイルを開きます。
|
オーバーロード (4) は、 |
(C++17以上) |
ファイルは、以下のように決定される第2引数 (mode) を用いて std::fopen を呼んだかのように開かれます。
| mode | openmode & ~ate | ファイルがすでに存在する場合の動作 | ファイルが存在しない場合の動作 |
|---|---|---|---|
| "r" | in
|
先頭から読み込む | エラー |
| "w" | out, out|trunc
|
内容を破棄 | 新しく作成 |
| "a" | app, out|app
|
ファイルに追記 | 新しく作成 |
| "r+" | out|in
|
先頭から読み込む | エラー |
| "w+" | out|in|trunc
|
内容を破棄 | 新しく作成 |
| "a+" | out|in|app, in|app
|
終端に書き込み | 新しく作成 |
| "rb" | binary|in
|
先頭から読み込む | エラー |
| "wb" | binary|out, binary|out|trunc
|
内容を破棄 | 新しく作成 |
| "ab" | binary|app, binary|out|app
|
終端に書き込み | 新しく作成 |
| "r+b" | binary|out|in
|
先頭から読み込み | エラー |
| "w+b" | binary|out|in|trunc
|
内容を破棄 | 新しく作成 |
| "a+b" | binary|out|in|app, binary|in|app
|
終端に書き込み | 新しく作成 |
openmode が一覧にあるモードのいずれでもない場合、 open() は失敗します。
開く操作が成功し、 openmode & std::ios_base::ate != 0 (ate ビットがセットされている) の場合は、 std::fseek(file, 0, SEEK_END) を呼んだかのようにファイル位置をファイル終端に設定します (ただし file は fopen から返されるポインタです)。 位置設定に失敗した場合は、 close() を呼び、失敗を表すヌルポインタを返します。
紐付けられているファイルがすでに開いている場合は、直ちにヌルポインタを返します。
引数
| s, str, p | - | 開くファイル名。 s はヌル終端文字列を指していなければなりません
|
| openmode | - | ファイルを開くモード。 std::ios_base のモードのビット単位の論理和 |
戻り値
成功した場合は this、失敗した場合はヌルポインタ。
ノート
open() は一般的に std::basic_fstream のコンストラクタまたは open() メンバ関数を通して呼ばれます。
例
| This section is incomplete Reason: no example |
関連項目
| 紐付けられているファイルが開いているかどうか調べます (パブリックメンバ関数) | |
| put 領域のバッファをフラッシュし、紐付けられているファイルを閉じます (パブリックメンバ関数) |