2012-06-22 37 views
3

這個問題一直困擾着我很長一段時間。例如,代碼ifstream ::讀取失敗,在ASCII 26

ifstream in; 
char temp; 
int a; 

in.open ("Random.txt"); 

for (a = 0;a < 10000;a++) 
    in.read (&temp, 1); 

in.close(); 

工作正常,直到ifstream遇到的替代字符(ASCII = 26)。然後,對於所有以下字符,ifstream::read給我temp = -1。我並不是真的希望發生這種情況,而是希望它繼續閱讀文件中的字符而不是-1。我做錯了什麼?

+0

不是一個答案,而是一個提交...不是26文件結尾(EOF)的ASCII字符?我會看運行時。 –

+0

是的......我完全忘記了這一點。但是我的程序讀入的數據包含各種數據,所以當我在26中讀取時,它不是文件的結尾。 – GILGAMESH

回答

9

您需要以二進制模式打開流。由於歷史原因,Windows上的文本模式會將Control-Z(ASCII 26)視爲文件的結尾。

還有更多詳情in this earlier answer of mine

+0

是的,這解決了我的問題!謝謝。我現在無法接受你的答案,但是在SO允許我的情況下,我會在7分鐘內這樣做。 – GILGAMESH