0

我有一个结构:

struct {
  Header header;
  uint32_t var1;
  uint32_t var2;
  char var3;
  char var4[4];
};

你得到了提示。问题是我通过网络接收字节数组,我首先必须先解析 Header。所以我先解析头部,然后我必须解析结构的其余部分。

我试过,

void* V = data;  // which is sizeof(uint32_t) * 2 + sizeof(char) * 5

然后尝试像 (V)、V+sizeof(uint32_t) ... 等那样解析它。

但它给出了编译器错误。如何通过网络解析该结构的其余部分?

4

1 回答 1

3

C++ 中数据的基本单位是char. 它是可以寻址的最小类型,根据定义它的大小为 1。此外,语言规则特别允许将所有数据视为字符序列。所有 I/O 都以字符序列(或流)的形式发生。

因此,您的原始数据缓冲区应该是一个char数组。

(另一方面, avoid *在 C++ 中的用途非常具体且有限;它的主要目的是指定对象在内存中的地址。例如,的结果operator new()是 a void *。)

于 2012-05-16T05:32:57.787 回答