0

If the file has a list of coordinates and a character:

(1,2,3,A)
// blah blah
(10,20,30,B)
(11,22,33,C)

the expression in the while loop never evaluates to true, Why is this?

string str = "";
char aa, cc, ee, gg, hh, ii;
int bb, dd, ff;
while(cin >> aa >> bb >> cc >> dd >> ee >> ff >> gg >> hh >> ii ||
      cin >> str) {
    if(str != "") {
        cout << str << endl;
    }
    else {
        cout << aa << " " << bb << " " << cc << " " << dd << " " << ee << " " <<  ff << " " << gg << " " << hh << " " << ii << endl;
    }
}
4

1 に答える 1

3

ストリームが失敗状態になると、つまりstd::ios_base::failbit設定されると、ストリームがクリアされるまでストリームは何もしません。つまり、最初の入力が失敗した場合、2 番目の入力も失敗します。最初に文字列を読み取り、次に文字列ストリームを使用して構成要素にデコードされるかどうかを確認します。

于 2013-09-26T19:07:45.507 に答える