ホームページ >バックエンド開発 >C++ >標準入力と標準出力の両方を C のファイルにリダイレクトするにはどうすればよいですか?

標準入力と標準出力の両方を C のファイルにリダイレクトするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 03:07:15462ブラウズ

How Can I Redirect Both Standard Input and Output to Files in C  ?

入力と出力をファイルに同時にリダイレクトする

次のようなさまざまな理由で、標準の入力ストリームと出力ストリームをファイルにリダイレクトしたい場合があります。ユーザーデータの収集やバッチ処理の実行。この記事では、これを 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。