我正在读取没有指针的简单二进制数据,使用 C++ 类而不使用以下代码填充:
#include <fstream>
#include <iostream>
using namespace std;
class Data {
public:
int a;
int b;
short int c;
double d;
}__attribute__((packed));
int main() {
Data myData;
ifstream ifs("test.bin", ios::binary);
ifs.read((char *)&myData, sizeof(myData));
ifs.close();
}
我使用这种方法是因为数据可能有 20 多种不同的格式,我想编写 20 多种不同的类来涵盖所有可能出现的格式。我还读到其他选项包括使用位域、pragma 指令,甚至是 boost 序列化例程(我不能,因为我必须使用 std)。我的问题是:这是使用没有填充的类读取简单二进制数据的最佳方法吗?您是否建议任何其他替代方案?我想了解什么是最安全和最广泛使用的方法。