入力と出力をファイルに同時にリダイレクトする
次のようなさまざまな理由で、標準の入力ストリームと出力ストリームをファイルにリダイレクトしたい場合があります。ユーザーデータの収集やバッチ処理の実行。この記事では、これを C で実現するための包括的なソリューションを提供します。
ソリューション
提供されている C コードは、標準入力 (cin) を指定したファイル ("in.txt") に出力し、標準出力 (cout) を指定したファイルに出力します("out.txt"):
#include <iostream> #include <fstream> #include <string> void f() { std::string line; while (std::getline(std::cin, line)) { // input from "in.txt" std::cout << line << "\n"; // output to "out.txt" } } int main() { std::ifstream in("in.txt"); std::streambuf *cinbuf = std::cin.rdbuf(); // save old cin buffer std::cin.rdbuf(in.rdbuf()); // redirect std::cin to "in.txt" std::ofstream out("out.txt"); std::streambuf *coutbuf = std::cout.rdbuf(); // save old cout buffer std::cout.rdbuf(out.rdbuf()); // redirect std::cout to "out.txt" std::string word; std::cin >> word; // input from "in.txt" std::cout << word << " "; // output to "out.txt" f(); // call function std::cin.rdbuf(cinbuf); // reset cin to standard input std::cout.rdbuf(coutbuf); // reset cout to standard output std::cin >> word; // input from standard input std::cout << word; // output to standard output }入力と出力の両方を 1 行でリダイレクトするには:
auto cinbuf = std::cin.rdbuf(in.rdbuf()); // save and redirect inputこの原則は任意のストリームに適用され、ユーザー入力とプログラム出力が可能になります。便利に管理できます。
以上が標準入力と標準出力の両方を C のファイルにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。