在C中,我曾用char *來處理表示網絡數據包的一些結構。然後,我只是分配數據包的參數,並通過網絡發送:如何在C++中將結構映射爲字符合適的方法
修訂 - 我忘了補充一點,我有一些有效載荷
struct packet {
uint64_t id __attribute__((packed));
uint64_t something __attribute__((packed));
short flags __attribute__((packed));
// here follows payload with variable length
};
...
char *payload = get_payload();
size_t payload_size = get_payload_size();//doesnt matter how
char *data = malloc(sizeof(struct packet)+payload_size);
struct packet *pkt = (struct packet *)data;
pkt->id = 123;
pkt->something = get_something();
pkt->flags = FLAG | FLAG2;
memcpy(data+sizeof(struct packet), payload, payload_size);
send(data, sizeof(struct packet)+payload_size);
現在我想用一些很不錯的C++功能來實現這一點(如果有更好的方法可以做到這一點) 我可以在C++中做的最好的改變是使用new而不是malloc。
char *data = new char[sizeof(struct packet)];//rest is same
確定這被稱爲對象的序列化。我已經找到了幾個例子總是使用升壓,我不能用..心不是有原生的方式在C++來acomplish呢?
你在問什麼一般稱爲「對象序列化」。嘗試使用Google搜索或選擇「C++對象序列化」。 – piokuc