2013-10-17 32 views
1

我試圖讀取一個文件(實際上是一個ROM)​​。事情是,我的程序在實際到達文件結尾之前停止。這是我寫的:試圖讀取文件直到最後(不工作)

int main(){ 
cout << "Entter the file to read in HEX: " ; 
string fileName; 
cin >> fileName; 

ifstream streamLecture(fileName); 
unsigned char charLu; 
while(!streamLecture.eof()){ 
    streamLecture >> charLu;   
    cout<< hex << setw(2) << setfill('0') << short(charLu) << ' '; 
} 
streamLecture.close(); 

cout << endl; 
} 

這個程序清點HEX值的幾行,但我知道有,因爲我讀了十六進制編輯器程序的文件多了很多。

編輯:好的,所以我假設在我的文件中有一個EOF,我該如何跳過它或繼續閱讀後?再次感謝

+0

嘗試使用'而(streamLecture.get(charLu)){// ...'而不是'>>'。 – jxh

+0

@ZacHowland問題不是循環,而是爲什麼它在結束之前停止。我試過 while(streamLecture >> charLu) 但它仍然停止,我不知道爲什麼。謝謝 – user2888798

+0

@jxh與以前一樣的問題,在結束之前停止讀取 – user2888798

回答

3

以二進制方式打開文件,並使用get()

ifstream streamLecture(fileName, std::ios::binary); 
    while (streamLecture.get(charLu)) { 
     cout<< hex << setw(2) << setfill('0') << short(charLu) << ' '; 
    } 
+0

看起來像是在工作,非常感謝! – user2888798

+0

非常歡迎。 – jxh

0

使用

while(streamLecture >> charLu){ 
    cout<< hex << setw(2) << setfill('0') << short(charLu) << ' '; 
} 
+0

它不起作用。那麼它讀取罰款幾行,但它停止。我猜它正在打擊某種eof(文件結束符),並在結束之前停止。有任何想法嗎? – user2888798