0

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

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

即使 ch='0' 也不会执行上述代码

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

那也没有给我正确的答案如何比较这些?它必须与ascii编码或其他东西有关吗?

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

4

2 回答 2

0

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

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

既然你说你有一个二进制文件,我假设你想问的是如何一点一点地读取文件的内容。这就是你要问的吗?

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

如果是,您希望首先按您的操作逐字节读取(即:逐字符),然后在字节上迭代地应用一些掩码,以查看在字节中的给定位置是否存在 1 或 0 (这 -如何将字符转换为二进制? - 可能会有所帮助)。

于 2013-09-26T11:05:30.667 回答
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++;
}
于 2013-09-28T18:00:06.543 回答