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

ale*_*son 3 c++ fstream

我想知道为什么我不能使用>>an 的运算符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;
    }
Run Code Online (Sandbox Code Playgroud)

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

Car*_*rum 8

显然你正在读一个二进制文件.该read命令从文件中将请求的数字字节复制到您提供的指针所指示的内存中.该>>运营商希望找到ASCII文本转换成整数.这两个操作简直不一样.

  • 值得一提的是,标准区分***格式化输入函数***和`运算符>>(unsigned int&val);`是其中之一,而`get`,`ignore`和`read`是***未格式化的输入功能***.当然,没有格式化输入,*格式化输入功能*不起作用. (2认同)