结构似乎是解析二进制数据 block (即文件或网络数据包)的有用方法。在 blob 中有可变大小的数组之前,这很好而且花花公子。例如:
struct nodeheader{
int flags;
int data_size;
char data[];
};
这让我可以找到最后一个数据字符:
nodeheader b;
cout << b.data[b.data_size-1];
问题是,我想要多个可变长度数组:
struct nodeheader{
int friend_size;
int data_size;
char data[];
char friend[];
};
我没有手动分配这些结构。我有一个这样的文件:
char file_data[1024];
nodeheader* node = &(file_data[10]);
因为我正在尝试解析一个二进制文件(更具体地说是一个类文件)。我已经用 Java 编写了一个实现(这是我的类作业),不,我正在用 C++ 编写个人版本,并且希望不用编写 100 行代码就可以成功。有什么想法吗?
谢谢, 斯特凡
最佳答案
你不能有多个可变大小的数组。编译器在编译时应该如何知道 friend[] 的位置呢? friend 的位置取决于 data[] 的大小,而 data 的大小在编译时是未知的。
关于c++ - 在结构中取消引用可变大小数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178838/