2012-02-12 19 views
1

私はまだこれでかなり新しいので、これはおそらく非常に単純なものであり、私は語彙でも失敗するかもしれませんが、それは自分自身。C++:1つの空の入力と空の入力ファイルに反応する

私は特定の座標を変更するために異なるコマンドを要求するプログラムを作成しています。空のコマンドを与えると、新しいコマンドを要求するだけです。 と、そのファイルが空の場合、それはループで終わると際限なく新しいコマンドを要求します:問題が( 入力ファイル ./myprogram <このように)あなたがプログラムに入力ファイルを与える場合 からコマンドを読み取るようにということです。読み込む入力がなくなったらプログラムを終了することができます。しかし、コマンドがファイルから与えられるのか、一度に一つずつコマンドから与えられるのかを知ることができないので、どのように変化させることができますか?それともそれを知る方法はありますか?結局のところ、一度に1つずつ手作業で与えられれば、空のコマンドが1つではないということではありません。私はこれがあまりにも馬鹿に聞こえないことを願っています...

+0

EOFを確認するだけで済みます。 'while(infile){...}' EOFにある場合、 'infile'は' false'と評価されます –

答えて

1

私は "コマンド"はあなたのためのものではありませんが、個々の行を読んでいるように聞こえ、空(またはスペルミス)ライン。これは一度

for (std::string line; std::getline(in >> std::ws, line);) { 
    process(line) 
} 

すべての先頭の空白をスキップしin >> std::ws表現などすなわちすべてのスペース、改行、タブ、これを行うための簡単な方法は、ラインを読むが、最初にそれ以上の行がなくなるまで、先頭の空白をスキップすることです完了したら、std::getline()はただ1行の内容を読み取り、それをlineに入れます。先頭の空白をスキップした後にデータがない場合は、入力の行に達したためにstd::getline()が失敗します。 lineを何らかの方法でデコードする必要がある場合は、std::istringstreamに入力してデコードしてください。

関連する問題