0

これらのルールに従って入力を読み取る必要があります。

「入力は複数行のテキストで構成されています。一部の行は空の場合があります。prog.exe < input.txt入力は、オペレーティングシステムによって適切に入力の終わりが示されるような行を使用して、ファイルから供給することができます。キーボードの場合、通常、オペレーティング システム ( Ctrl+dUnix/Linux スタイルのシステムやCtrl+zMicrosoft システムなど)に応じて、何らかのコントロール キーで入力の終了を知らせる方法があります。"

以前はこの方法でやっていた

while(getline(cin, data)) {
     if(data == "0") break;
     / * do stuff */
}

したがって、必要な数の行を読み取って計算を実行し、完了したら 0 を入力してプログラムを終了することができます。.txt ファイルに 1 行に 1 つずつリストを入力してから呼び出してみprogram.exe < myfile.txtましたが、何も起こりませんでした。

これは何をしているの< file.txtですか?

そのようにプログラムを呼び出すときに、その中のコンテンツを適切に処理するにはどうすればよいですか?

ctrlそして、 +を押したときに計算するにはどうすればよいzですか?

4

2 に答える 2

1

演習のテキストを言い換える:

を使用すると、 (キーボードではなく)入力のソースとしてwithをcommand1 < file1実行します。command1file1

これは、標準入力のリダイレクトとして知られています。

std::cinfile1キーボードからではなく、から入力を取得します。

CTRL入力ファイルの末尾は+に似ていますZ(Microsoft システムではCTRL+ D、その他のほとんどのシステムでは +)。ファイルの終わりに到達したらstd::getline()(または「0」だけの行を読んだら)、-loop を終了し、収集した (そしておそらく何らかのコンテナーに格納された) でwhile計算を行うことができます。data

于 2012-04-28T01:24:12.923 に答える
0

宿題みたいだから…

ヒント 1: ><<<>>は、シェル (Windows の CMD) の「入出力リダイレクト」です。

ヒント 2: getline は結果を返します (RTFM つまり、C バージョンを使用する場合はhttp://linux.die.net/man/3/getline、C++の場合はhttp://www.cplusplus.com/reference/string/getline/および対応する istream メソッド)

于 2012-04-28T01:20:51.400 に答える