名前空間
変種
操作

std::freopen

提供: cppreference.com
< cpp‎ | io‎ | c
 
 
 
 
ヘッダ <cstdio> で定義
std::FILE* freopen(constchar* filename, constchar* mode, std::FILE* stream );

まず、あらゆるエラーを無視して stream に紐付けられたファイルを閉じることを試みます。 その後、 filename がヌルでなければ、 fopen によって行われたかのように、 mode を使用して filename で指定されたファイルを開くことを試み、そのファイルを stream の指すファイルストリームに紐付けます。 filename がヌルポインタの場合は、すでに stream に紐付けられているファイルを開き直すことを試みます (この場合にモード変更が可能かどうかは処理系定義です)。

目次

[編集]引数

filename - ファイルストリームを紐付けるファイル名
mode - 新しいファイルアクセスモードを決定するためのヌル終端文字列
ファイルアクセスモード文字列 意味 説明 ファイルがすでに存在する場合の動作 ファイルが存在しない場合の動作
"r" read 読み込み用にファイルを開く 先頭から読み込み エラー
"w" write 書き込み用にファイルを作成 内容を破棄 新規作成
"a" append ファイルに追記 終端に書き込み 新規作成
"r+" read extended 読み込み/書き込み用にファイルを開く 先頭から読み込み エラー
"w+" write extended 読み込み/書き込み用にファイルを作成 内容を破棄 新規作成
"a+" append extended 読み込み/書き込み用にファイルを開く 終端に書き込み 新規作成
バイナリモードでファイルを開くためにファイルアクセスモード "b" を任意に指定できます。 このフラグは POSIX システムでは効果がありませんが、例えば Windows では '\n' および '\x1A' の特殊処理を無効化できます。
追記ファイルアクセスモードでは、データはファイル位置指示子の現在位置にかかわらずファイルの終端に書き込まれます。
ファイルアクセスモードフラグ "x" を "w" または "w+" 指定子に追加することができます。 このフラグはファイルが存在している場合に、それを上書きする代わりに関数を強制的に失敗させます。 (C++17)
モードが上記の文字列のいずれでもなければ動作は未定義です。 処理系によっては追加でサポートされているモードを定義していることがあります (例えば Windows)。
stream - 変更するファイルストリーム

[編集]戻り値

成功した場合は stream、失敗した場合は NULL

[編集]ノート

freopen は入出力操作または std::fwide によっていったん確立されたストリームのナロー/ワイド指向を変更する唯一の方法です。

[編集]

以下のコードは stdout をファイルにリダイレクトします

#include <cstdio>   int main(){std::printf("stdout is printed to console\n");if(std::freopen("redir.txt", "w", stdout)){std::printf("stdout is redirected to a file\n");// this is written to redir.txtstd::fclose(stdout);}}

出力:

stdout is printed to console

[編集]関連項目

ファイルを開きます
(関数)[edit]
ファイルを閉じます
(関数)[edit]
close