C++ 结构体中含有string 或者 vector时如何发送数据

mysqlno2 2013-03-08 01:47:05
需要发送数据的结构体

struct _MSG_PACK{
uint msg_id;
....
char data[MAX_LEN];
u_long data_len;
};MSG_PACK;


要传的内容大概 是这样的

struct _app{
string app_group;
vector<string> v_apps;
}APP;

我设计了一个函数来构造这个包:
MSG_PACK CreatePacket(u_char msgId,u_char cmd,const char* data)
{
MSG_PACK mp;
memset(&mp,0,sizeof(MSG_PACK));
mp.msgId=msgId;
mp.cmd=cmd;
strncpy(mp.data,data,strlen(data)+1);
mp.data_size=strlen(data)+1;
return mp;
}

然后填充
APP app;
app.app_group="G-1";
app.v_apps=m_apps; //m_apps 是预先获取的vector<string>

然后把APP作为MSG_PACK的data 部分发送出去
MSG_PACK mp=CreatePacket(100,20,(char*)&app);

但是得到的这个mp.data 里面的数据 只有两个字节?

结构体中如果还有string 或者 vector 等动态元素的时候 怎么转化为char* ?



...全文
271 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-03-08
  • 打赏
  • 举报
回复
参考Google protobuf
zilaishuichina 2013-03-08
  • 打赏
  • 举报
回复
mp.data里面应该是填充: app_group.length(); app_group.c_str(); v_apps[0].length(); v_apps[0].c_str(); v_apps[1].length(); v_apps[1].c_str(); ... v_apps[n].length(); v_apps[n].c_str();
qq120848369 2013-03-08
  • 打赏
  • 举报
回复
序列化后发出.
氰客 2013-03-08
  • 打赏
  • 举报
回复
把数据转换到一个数据结构里面发呗,带上个数……信息,接收后解析回来就是了
rocktyt 2013-03-08
  • 打赏
  • 举报
回复
转化为char数组再传

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧