16

入力を高速化するために、入力が既に設定されfile-redirectionているファイルを実行して含めることができることを読みました。cin

理論的には、次のように使用する必要があります。

App.exe inputfile outputfile

私が C++ Primer book から理解している限り、次の C++ コード [1] はcinテキスト ファイルから入力を読み取る必要があり、[2] のような他の特別な指示は必要ありません。

[2]

include <fstream>
ofstream myfile;
myfile.open ();

[1] 次の C++ コード...

#include <iostream>
int main()
{
    int val;
    std::cin >> val; //this value should be read automatically for inputfile
    std::cout << val;
    return 0;
}

何か不足していますか?

4

4 に答える 4

22

コード [1] を使用するには、次のようにプログラムを呼び出す必要があります。

App.exe < inputfile > outputfile

以下も使用できます。

App.exe < inputfile >> outputfile

この場合、コマンドを実行するたびに出力が書き換えられるわけではありませんが、出力は既存のファイルに追加されます。

Windows での入出力のリダイレクトの詳細については、こちらを参照してください


<>および>>記号は、そのまま入力する必要があることに注意してください。これらは、この説明で提示するためだけのものではありません。たとえば、次のようになります。

App.exe < file1 >> file2
于 2013-08-06T13:28:25.833 に答える
5

元のリダイレクトに加えて>/>><

リダイレクトすることもできstd::cinますstd::cout

次のように:

int main()
{
    // Save original std::cin, std::cout
    std::streambuf *coutbuf = std::cout.rdbuf();
    std::streambuf *cinbuf = std::cin.rdbuf(); 

    std::ofstream out("outfile.txt");
    std::ifstream in("infile.txt");

    //Read from infile.txt using std::cin
    std::cin.rdbuf(in.rdbuf());

    //Write to outfile.txt through std::cout 
    std::cout.rdbuf(out.rdbuf());   

    std::string test;
    std::cin >> test;           //from infile.txt
    std::cout << test << "  "; //to outfile.txt

    //Restore back.
    std::cin.rdbuf(cinbuf);   
    std::cout.rdbuf(coutbuf); 

}
于 2013-08-06T13:54:04.783 に答える