从二进制文件中使用 ifstream 一次读取 4 个字节

Read 4 bytes a time with ifstream from binary file

我有一个包含浮点数的二进制文件,因此每 4 个字节都是一个浮点数。 我不确定如何以每四个字节存储为浮点数的方式进行读取,这样我就可以用它做任何我需要的事情。

这是我的代码:

int main()
{
    float i;
    std::ifstream inFile("bin_file", std::ios::binary);
    while (inFile >> i)
    {
        std::cout << i;
    }
    inFile.close();
    return 0;
}

那样的话,它甚至不会进入while循环,除非我将i定义为char。我猜那是因为它每次读取 1 个字节并且不能将其存储为浮点数。 顺便说一句,我已经检查并打开了文件。

谢谢!

流中的 operator>> 是为格式化数据(即字符串)设计的。您想改用 read

int main()
{
    float i;
    std::ifstream inFile("bin_file", std::ios::binary);
    while(inFile.read(reinterpret_cast<char*>(&i), sizeof(i))) {
        std::cout << i;
    }
    inFile.close();
    return 0;
}