C++のfreopen関数の使い方
freopen関数は標準入力出力をリダイレクトするために使用できます。
原型は次のとおりです。
FILE *freopen(const char *filename, const char *mode, FILE *stream);
filenameパラメータは、開くファイルの名前です。
modeパラメータはファイルを開く際のモードを指定し、次のいずれかのモードにすることができます。
- 「r」:読み込みモード、既存のテキストファイルをオープンして読み込みを行う。
- 「w」: 書き込みモードで、テキストファイルを書き込み用に開き、ファイルが存在しなければ作成し、存在する場合はファイルの内容を消去します。
- 「a」: 追加モード、テキストファイルを書き込みのため開き、存在しない場合は作成
- 「rb」:バイナリ読み取りモードで、既存のバイナリファイルを読み込み用に開きます。
- 「wb」: バイナリーモードで書き込み、バイナリーファイルを開き、ファイルが存在しない場合は作成し、ファイルが存在する場合はファイルの内容を削除します。
- 「ab」: バイナリ追加モード、ファイルを開いてバイナリで書き込み、無い時は作る
ストリーム引数はすでに開いているファイルストリームポインタで、stdin、stdout、stderr または fopen 関数によって開かれたファイルストリームポインタにすることができます。
標準入力ストリームをファイルにリダイレクトしてからそのファイルからデータを読み取るサンプルを示します。
#include <iostream>
#include <cstdio>
int main() {
freopen("input.txt", "r", stdin); // 将标准输入流重定向到文件input.txt
int num;
std::cin >> num; // 从文件中读取数据
std::cout << "Number: " << num << std::endl;
return 0;
}
このプログラムを実行すると、データの入力が input.txt ファイルから読み込まれます。
freopen関数を使う際にはファイルの解放や閉じ忘れに注意して、リソースのリークやファイル操作のエラーを避けるべきです。