C++のfreopen関数の使い方

freopen関数は標準入力出力をリダイレクトするために使用できます。

原型は次のとおりです。

FILE *freopen(const char *filename, const char *mode, FILE *stream);

filenameパラメータは、開くファイルの名前です。

modeパラメータはファイルを開く際のモードを指定し、次のいずれかのモードにすることができます。

  1. 「r」:読み込みモード、既存のテキストファイルをオープンして読み込みを行う。
  2. 「w」: 書き込みモードで、テキストファイルを書き込み用に開き、ファイルが存在しなければ作成し、存在する場合はファイルの内容を消去します。
  3. 「a」: 追加モード、テキストファイルを書き込みのため開き、存在しない場合は作成
  4. 「rb」:バイナリ読み取りモードで、既存のバイナリファイルを読み込み用に開きます。
  5. 「wb」: バイナリーモードで書き込み、バイナリーファイルを開き、ファイルが存在しない場合は作成し、ファイルが存在する場合はファイルの内容を削除します。
  6. 「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関数を使う際にはファイルの解放や閉じ忘れに注意して、リソースのリークやファイル操作のエラーを避けるべきです。

bannerAds