2013-09-26 64 views
0

我有從文件中讀取一個二進制值,並必須做出比較其是否1或0 但是當我嘗試比較焦炭和C「0」比較++不會放棄希望的結果

char ch; 
while(!in.eof()){ 
    in.get(ch); 
    if(ch=='0') count0++; 
} 

的上面的代碼不執行,即使CH =「0」

if(ch=='1') count1++; 

太不給我正確的答案 如何將這些比較? 它必須做什麼與ascii編碼或什麼?

From comment: 該文件的內容是01101111111111111100000000就是這樣。這是一個.txt文件

+0

值。 – jrok

+4

是您讀取二進制文件的文件,還是包含字符「0」和「1」的文本文件? –

+0

@jrok爲什麼不只是'ch == 0'? 'char'是一個整數類型。 – dyp

回答

0

您的問題留有一些解釋空間。

你說你的文件包含'1'和'0'。所有文件都包含1和0。計算機只包含一個和零(笑話!)。

既然你說你有一個二進制文件,我假設你試圖問的是如何讀取文件的內容一點一點。你在問什麼?

如果沒有,那麼你已經在評論中有答案。放棄此消息的其餘部分。

如果是的話,你應該首先逐字節讀取(即:char by char),然後迭代地在字節上應用一些掩碼,以查看字節中給定的位置是否存在一個或零(這 - how to convert a char to binary? - 可能有幫助)。

+0

沒有文件的內容是01101111111111111100000000就像它是一個.txt文件 – sara

0

從不使用eof()作爲檢查文件讀取是否成功的替代方法。

它可能看起來方式如下:的` '0'`不爲0,你要`' \ 0'`

std::ifstream in("test.txt", std::ifstream::in); 
if (!in.is_open()) { 
    std::cout << "Error opening file"; 
    return -1; 
} 

int count0 = 0, 
    count1 = 0; 
char ch; 
while (in.get(ch)) { 
    if (ch == '0') 
     count0++; 
    else if (ch == '1') 
     count1++; 
}