我正在读取简单的二进制数据,没有指针,使用 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)。我的问题是:这是使用无填充类读取简单二进制数据的最佳方式吗?您是否建议任何其他替代方法?我想了解目前最安全和使用最广泛的方法是什么。
最佳答案
通常,人们会使用 struct
而不是 class
,但是是的,相同的概念适用于两者。
关于c++ - 使用不填充的类在 C++ 中读取二进制数据的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691605/