2013-09-26 216 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設置,直到流得到了清除流什麼都不會做。也就是說,如果您的第一個輸入失敗,那麼第二個輸入也會失敗。什麼可以解決問題:首先閱讀字符串,然後使用字符串流來查看它是否解碼爲成分。

相關問題