2013-09-26 146 views
0

如果文件具有坐标列表和字符:为什么while循环永远不会评估为真?

(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; 
    } 
} 
+0

请使用'std :: vector'。 –

+1

尽量避免告诉我们事情“不起作用”,而是描述你得到的具体错误/不正确的输出。它使我们更容易诊断问题 –

+0

对不起!我刚刚编辑它。出于某种原因,我的while循环从未评估为真。 – thedanyaal

回答

3

一旦您流已经进入失效状态,即,std::ios_base::failbit设置,直到流得到了清除流什么都不会做。也就是说,如果您的第一个输入失败,那么第二个输入也会失败。什么可以解决问题:首先阅读字符串,然后使用字符串流来查看它是否解码为成分。

相关问题