我正在从文件中读取二进制值,并且无论是1还是0都必须进行比较 但是当我尝试比较时
char ch;
while(!in.eof()){
in.get(ch);
if(ch=='0') count0++;
}
即使ch ='0'
,上述代码也不会执行if(ch=='1') count1++;
这也没有给我正确答案 如何比较这些? 它必须用ascii编码做些什么吗?
来自评论:
该文件的内容就是01101111111111111100000000
。这是一个.txt文件
答案 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++;
}