2012-04-28 16 views
0

を使用して、C++での入力を読み取るために、私はこれらの規則に従って入力を読み込む必要があります:どのようPROGRAM.EXE <TEXT.TXT

は「入力は数行のテキストで構成されて一部の行が空の可能性がザ・。。入力はファイルから、prog.exe < input.txtのような行を使用して入力することができます。この場合、入力の終了はオペレーティングシステムによって適切に示されます。キーボードを使用して入力を入力すると、コントロールキー(オペレーティングシステムに応じて)(Unix/LinuxスタイルのシステムではCtrl + d、MicrosoftシステムではCtrl + z

は、以前私がだから私は、私が好きなだけのラインを読み、計算をプリフォーム、と私は終わりだときにちょうど0を入力して、私のプログラムを終了することができ、このよう

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

それをやってきました。 1行に1つの.txtファイルのリストを入力してからprogram.exe < myfile.txtを呼び出してみましたが、何も起こりませんでした。

< file.txtは何をしていますか?

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

そして、どのように私はあなたがCTRL +Zを打ったとき、それは物事を計算することができますか?

+0

たとえば、Windowsでコマンド「dir」を実行すると、現在のディレクトリの内容が一覧表示されます。'dir> thisDir.txt'を発行すると、出力が指定されたテキストファイルにリダイレクトされます。このロジックは、あなたの質問の一部に答えるために使用できます。 – chris

答えて

1

あなたの運動のテキストを言い換え:

をして、command1 < file1command1を実行使い方を入力ののソースとしてfile1(キーボードではなく)。

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

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

入力ファイルの終わりには、(マイクロソフトのシステムで、最も他人にCTRL + DCTRL + Zに類似しています。 std::getline()がファイルの最後に到達すると(または単に「0」の行を読み取った場合)、while -loopを終了し、収集したdataで計算を実行できます(おそらく、 )。

0

それは宿題のように聞こえるので...

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

ヒント2:getlineの戻りが発生(RTFMすなわちhttp://linux.die.net/man/3/getlineあなたはCバージョンまたはC++ http://www.cplusplus.com/reference/string/getline/と対応のIStreamメソッドのために使用している場合)

+2

いいえ、getline(istream&、string&)、getline(char **、size_t *、FILE *)ではなく、結果を返しません。 – abarnert

+0

soooを見たC.ありがとう - 更新されました。 –

+0

@AlexeiLevenkov:はい、CスタイルのコメントはC++のタグと衝突します。 – Johnsyweb

関連する問題