c++ - 为什么 fstream.read 工作而不是 >>?

标签 c++ fstream

<分区>

我想知道为什么我不能使用 std::ifstream>> 运算符从二进制文件中读取 unsigned int。

#include <fstream>

    int main(int argc, char* argv[])
    {
        std::ifstream in(argv[1]);
        if(in.fail())
            return -1;

        unsigned int atom_size = 0;

        in.read(reinterpret_cast<char*>(&atom_size), 4);
        in >> atom_size;

        return 0;
    }

当我使用 in.read 时,我得到了我想要的值,但是当我使用 >>> 运算符时,我的 atom_size 变量没有改变。为什么?

最佳答案

显然您正在读取一个二进制文件。 read 命令从字面上将请求的数字字节从文件复制到您提供的指针指示的内存中。 >> 运算符期望找到要转换为整数的 ASCII 文本。这两个操作根本不一样。

关于c++ - 为什么 fstream.read 工作而不是 >>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933996/

相关文章:

c++ - 当文件无法打开时我应该关闭它吗?

C++计算数字和字符

c++ - 维基百科的线交公式不能处理大数?

c++ - 堆/堆栈 - 进入 QGraphicsItemGroup 的变量范围

c++ - 将 GLEW 添加到项目 (CMake)

c++ - typedef 相对于派生类的优势?

c++ - 使用 getline() 从文件发出读取行

c++ - 为什么 'new line' 偏移 .txt 文件中的所有字符字节位置 +1?

c++ - 我正在编写一个非常简单的字母评分系统,if 语句是否最有效?

图像文件的C++ ifstream