c++ - 按位读取文件 C++

标签 c++ ifstream

我有二进制文件作为输入,我需要逐位简单地读取它。如果我想按字符读取文件,我会使用这个:

    ifstream f(inFile, ios::binary | ios::in);
    char c;
    while (f.get(c)) {
        cout << c;
    }

此代码的输出是字符序列,我需要的是 1 和 0 的序列。函数 get() 返回下一个字符,但我找不到任何返回下一位的 ifstream 函数。

有没有类似的实现方式?

感谢任何人的帮助。

最佳答案

你不能只是一点一点地读取文件。 所以,你应该使用这样的东西:

ifstream f(inFile, ios::binary | ios::in);
char c;
while (f.get(c))
{
    for (int i = 7; i >= 0; i--) // or (int i = 0; i < 8; i++)  if you want reverse bit order in bytes
        cout << ((c >> i) & 1);
}

关于c++ - 按位读取文件 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22390641/

相关文章:

c++ - 在 typedef 上使用 sizeof 而不是局部变量

android - 我可以在 Android NDK 中使用 ifstream 来访问资源吗?

c++ - 为什么两次使用 ifstream 对象会导致错误?

C++:构造函数歧义

c++ - 如何将字符串转换为 ifstream

c++ - c++ 中的 ifstream - 编译器问题

C++如何读取txt文件并检索数值,除了字符串(反之亦然)

c++ - 如何从另一个类编辑 QMainWindow UI 小部件?

c++ - 是否有像 PSR-1/2 这样的 C++ 编码标准

c++ - 如何强制派生类实现静态函数,该函数接收派生类的对象作为参数