2013-11-28 109 views
0

從文件讀取整數時出現問題。至於我的知識,它應該工作。你能告訴我我在這裏做錯了什麼嗎?無法從文件中讀取

int fileCount = 0; 
    ifstream listFileStream (fileName); 

    if (listFileStream.is_open()) { 

      listFileStream >> fileCount; 
      cout << fileCount; 

    } 

它只打印0即使該文件的第一行是28

+0

嘗試一次讀一行。見[這裏](http://www.cplusplus.com/doc/tutorial/files/) –

+0

如果我將變量類型更改爲字符串,它會給出...'fileCount =「ÿþ2」' –

+2

@SankaD我想你在文件的開頭有一些意想不到的字符。甚至可能是字節順序標記(BOM)。 – john

回答

2

您應經常檢查您閱讀的嘗試是成功的:

if (listFileStream >> fileCount) { 
    process(fileCount); 
} 

如果讀不成功後,您可以嘗試從中恢復或報告錯誤。這裏是你可以嘗試恢復的一種方法:恢復流良好狀態並忽略第一個字符:

listFileStream.clear(); 
listFileStream.ignore(); 

沒有流恢復到良好狀態的所有輸入嘗試將被忽略。一旦違規角色被刪除,您將重試讀取。