名前空間
変種
操作

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

From cppreference.com
< cpp‎ | io‎ | basic fstream
 
 
 
 
void open( const char* filename,

           std::ios_base::openmode mode

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

           std::ios_base::openmode mode

               = std::ios_base::in | std::ios_base::out );
(2) (C++17以降)
void open( const std::string& filename,

           std::ios_base::openmode mode

               = std::ios_base::in | std::ios_base::out );
(3) (C++11以降)
void open( const std::filesystem::path& filename,

           std::ios_base::openmode mode

               = 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_typechar ではない場合にのみ提供されます。(C++17以降)
3,4) 実質的に (1,2)open(filename.c_str(), mode) で呼び出すかのように処理します。

目次

[編集] パラメータ

filename - 開くファイルの名前
モード - ストリームのオープンモードを指定します。これは BitmaskType であり、以下の定数が定義されています。
Constant 説明
app 書き込みごとにストリームの末尾にシークします。
2進 バイナリモードで開きます。
in 読み取り用に開きます。
out 書き込み用に開きます。
trunc 開くときにストリームの内容を破棄します。
ate 開いてすぐにストリームの末尾にシークします。
noreplace (C++23) 排他モードで開きます。

[編集] 戻り値

(なし)

[編集]

#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 のデフォルト引数
が欠落していました(シノプシスには存在します)。
追加された
  1. LWG問題#22の解決は上書きされます。

[編集] 関連項目

ストリームに関連付けられたファイルがあるかチェックする
(public member function) [編集]
関連付けられたファイルを閉じる
(public member function) [編集]
ファイルをオープンし、関連付けられた文字シーケンスとして設定します。
(std::basic_filebuf<CharT,Traits> のメンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)