c++ socket 如何将一个对象发送给客户端?
classuser{stringname;stringpassword;stringsex;stringage;}网上查到是要序列化,求例子...
class user
{
string name;
string password;
string sex;
string age;
}
网上查到是要序列化,求例子 展开
{
string name;
string password;
string sex;
string age;
}
网上查到是要序列化,求例子 展开
4个回答
展开全部
如你所说,可以使用序列化,将user对象序列化成一个流,收到后再进行反序列化。
举一个小例子,这是序列化的思想,LZ可以理解并完善之:
class CArchive;
struct ISerialize
{
virtual void Serialize(CArchive &arch) = 0;
virtual void UnSerialize(CArchive &arch) = 0;
};
class CArchive
{
public:
CArchive(char *buff, int nLen)
{
m_szBuff = szBuff;
m_nLen = nLen;
m_nOffset = 0;
}
CArchive &operator <<(ISerialize &data)
{
data.Serialize();
return *this;
}
CArchive &operator <<(const string &str)
{
memcpy(m_szBuff + m_nOffset, str.c_str(), str.length() + 1);
m_nOffset += str.length() + 1;
return *this;
}
CArchive &operator >>(ISerialize &data)
{
data.UnSerialize();
return *this;
}
CArchive &operator >>(string &str)
{
}
private:
char* m_szBuff;
int m_nLen;
int m_nOffset;
};
class CUser : public ISerialize
{
string name;
string password;
string sex;
string age;
private:
// 实现 CUser 对象的序列化,会被存储到 CArchive 对象中
virtual void Serialize(CArchive &arch)
{
arch << name << password << sex << age;
}
virtual void UnSerialize(CArchive &arch)
{
arch >> name >> password >> sex >> age;
}
};
int main()
{
CUser user;
char szBuff[1024];
CArchive arch(szBuff, 1024);
arch << user;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一种 打包 利用三方控件 比如json。第二种 自定义序列化流
追问
有例子吗,能在哪里找到例子?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用这个函数send就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询