在学校项目中,我们有一个由嵌入式系统,XBee模块和服务器组成的系统,所有这些系统都将(将)在struct
之间进行组织。我的想法是序列化数组中的数据,模块可以理解,发送此数组并在另一侧重建struct
。
我们在设计中使用C ++(无C ++ 11),为方便起见,有时struct
将包含std::string
和std::vector
。我一直在尝试将结构(例如两个Xbee模块之间)作为char
的C样式数组发送。到目前为止,我有:
// From C:
#include<string.h>
// From C++:
#include<iostream>
#include<string>
#include<vector>
// A Project related struct:
struct A
{
std::string name;
std::vector<std::string> hobbies;
};
int main()
{
// Instantiate an object:
A a;
a.name = "John";
a.hobbies = {"hobby1", "hobby2"};
// Get the actual size of a, in bytes:
const size_t N = sizeof(a);
// Create a table of chars, big enough to accommodate 'a', It
// is this I want to communicate:
char buffer[N];
// Copy 'a' to 'buffer', byte-wise:
memcpy(buffer, &a, N);
// Retreive information:
A b;
memcpy(&b, buffer, N); // <-- This line causing segfault.
std::cout << b.name << std::endl;
return 0;
}
此代码段错误。它让我对这个主题做了一些更多的研究,我发现这个方法只适用于只包含C风格类型的结构。我没有找到的是如何实现我的沟通。
我怎么能这样做?