c++ - 使用 reinterpret_cast 将文件读入结构

标签 c++ inputstream binary-data reinterpret-cast

struct DATAs
{
    char data1;
    short data2;
    short data3;
    float data4;
    int data5;
    short data6;
    unsigned short data7;
    short data8;
    char data9;
};

void fixFile(char* filename)
{
    std::ifstream InputFile;
    InputFile.open(filename, std::ios::binary);

    DATAs FileDatas;
    InputFile.read(reinterpret_cast<char*>(&FileDatas), sizeof(FileDatas));
}

为什么我需要使用“reinterpret_cast”来代替阅读

"InputFile.read(&FileDatas, sizeof(FileDatas))"?

最佳答案

std::ifstream::read() 的第一个参数的类型是 char*。在 C++ 中,DATAs* 类型的指针不会自动转换为 char*。因此,您需要使用 reinterpret_cast

关于c++ - 使用 reinterpret_cast 将文件读入结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49565933/

相关文章:

php - 为什么 PHP substr() 改变 ASCII 回车字节?

c++ - 如何使用 CImg 库绘制一个简单的函数?

c++ - 等式比较 std::weak_ptr

c++ - 是否建议不要将大型 STL 对象作为值存储到 std::unordered_map 中?

android - 下载图像并将其存储在 ContentProvider 中

c - 将文件中的二进制字节值存储到 C 数组中

c++ - 查找节点树的最大路径总和

java - 将我的字节数组读入输入流

java - android:如何将数据写入媒体播放器缓冲区?

Java:解析无符号二进制数据