c ++中的char和'0'比较没有给出想要的结果

时间:2013-09-26 10:45:16

标签: c++ if-statement character

我正在从文件中读取二进制值,并且无论是1还是0都必须进行比较 但是当我尝试比较时

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

即使ch ='0'

,上述代码也不会执行
if(ch=='1') count1++;

这也没有给我正确答案 如何比较这些? 它必须用ascii编码做些什么吗?

来自评论: 该文件的内容就是01101111111111111100000000。这是一个.txt文件

2 个答案:

答案 0 :(得分:0)

你的问题留有一些解释空间。

你说你的文件包含'1'和'0'。所有文件都包含1和0。计算机只包含1和0(笑话!)。

既然你说你有一个二进制文件,我假设你要问的是如何逐位读取文件的内容。那是你在问什么?

如果没有,那么您已在评论中找到答案。丢弃此消息的其余部分。

如果是,你要先按字节逐个读取(即:char by char),然后在字节上迭代地应用一些掩码,看看字节中的给定位置是否有一个或零(这 - how to convert a char to binary? - 可能有帮助)。

答案 1 :(得分:0)

切勿使用eof()作为检查文件读取是否成功的替代方法。

它可能看起来如下:

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++;
}