C++ 结构体中含有string 或者 vector时如何发送数据
需要发送数据的结构体
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* ?