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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 00:08:09362ブラウズ

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

入力ストリームと出力ストリームをファイルにリダイレクトする

標準入力 (cin) と標準出力 (cout) を入出力用のファイルにリダイレクトするにはそれぞれの操作は次のようになります手順:

実装:

#include <iostream>
#include <fstream>
#include <string>

int main() {
    // Open the input and output files
    std::ifstream in("in.txt");
    std::ofstream out("out.txt");

    // Redirect cin and cout to the files
    std::streambuf* cinbuf = std::cin.rdbuf();
    std::cin.rdbuf(in.rdbuf());
    std::streambuf* coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(out.rdbuf());

    // Perform input and output operations
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << line << "\n";
    }

    // Reset cin and cout to standard streams
    std::cin.rdbuf(cinbuf);
    std::cout.rdbuf(coutbuf);

    return 0;
}

説明:

  • std を使用して入力ファイルと出力ファイルを開きます。 ::ifstream と std::ofstream、それぞれ。
  • std::cin.rdbuf() および std::cout.rdbuf() を使用して、cin および cout の現在のバッファーを保存します。
  • cin を入力ファイルのバッファーおよび cout にリダイレクトします。 std::cin.rdbuf(in.rdbuf()) を使用して出力ファイルのバッファに書き込み、 std::cout.rdbuf(out.rdbuf()).
  • 通常どおり入出力操作を実行します。
  • std::cin.rdbuf() を使用して、cin と cout を元のバッファーに復元します。シンブフ)とstd::cout.rdbuf(coutbuf).

簡易リダイレクト:

次を使用して 1 行で保存およびリダイレクトすることもできます:

auto cinbuf = std::cin.rdbuf(in.rdbuf());

これは cin のバッファを in.rdbuf() に設定し、古いバッファを返しますシンと関係がある。同じ手法を std::cout でも使用できます。

以上がC 標準の入出力ストリームをファイルにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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