私の入力ファイルが文字で始まっている場合は、int1
を書き換えることができないのでwhileループを停止しますが、これを検出してエラーメッセージを表示すると、workinfile>>int1
が機能しなくなり、 ?ifstream whileループでは、入力エラーを表示して次の行で再開する方法は?
cin>>filename;
ifstream workingfile(filename);
while (workingfile>>int1>>int2>>string1>>string2) {
cout<<int1<<int2<<string1<<string2<<endl;
linenumread++;
}
任意のヘルプは、それが同様に文字列を読んで停止した場合
while (workingfile>>int1>>int2>>string1>>string2) {
if(!(workingfile>>int1))
{
cout<<"Error first value is not an integer"<<endl;
continue;
}
cout<<int1<<int2<<string1<<string2<<endl;
linenumread++;
}
はまた、それを検出することが可能であろういただければ幸い、私はやってみましたが、それは動作しませんか?
入力ファイルは、私はそれが無効な入力に当たったとき、検出したエラーメッセージを表示し、ファイルの次の行に継続することにしたい。この
10 10 ab bc
11 11 cd ef
a
12 12 gh hi
ようになります。
whileループが無効な入力で停止します:次のようになります
。最良の方法は、ループ条件で 'std :: getline()'を使って完全な行を読み込み、 'std :: istringstream'を使って文字列を解析し、各値を調べることです。 – user0042
ようこそスタックオーバーフロー!あなたのコードは不完全です。特に、main()関数と少なくとも1つの '#include'が欠落しているようです。コードを問題の[mcve]にするようにコードを編集してください。そうすれば、それを再現して解決することができます。 [ask]も読んでください。 –
@TobySpeightここで完全なコードを提供する必要はありません。与えられた例では、問題はかなり明らかです。私は今日、はるかに悪い質問を見た。 – user0042