0

如果文件有一个坐标列表和一个字符:

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

循环中的表达式while永远不会计算为真,这是为什么呢?

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设置,流将不会做任何事情,直到流被清除。也就是说,如果您的第一个输入失败,那么第二个输入也将失败。可行的是旋转:首先读取字符串,然后使用字符串流查看它是否解码为成分。

于 2013-09-26T19:07:45.507 回答