C++SOCKET传含有string类型的结构体

先贴出部分关于结构体发送接收的代码

//保存鼠标信息的结构体(客户端、接收端都一样)
typedef struct tagpoint
{
	LONG x;//鼠标的x坐标
	LONG y;//鼠标的y坐标
	string info;//标识鼠标进行点击、键盘按键操作的字符串信息
};
//定义了一个全局变量
tagpoint *savepoint=new savepoint();

客户端:

//客户端发送函数
bool Client::sendpos()
{
	send(sclient, (char*)savepoint, sizeof(tagpoint), 0);
	return true;
}
//这里结构体指针savepoint已经在钩子的回调函数中定义

服务器端

//服务器端接受函数

void Server::recpos()
{
    
    recv(sClient, (char*)savepoint, sizeof(tagpoint), 0);
    
    cout  <<savepoint->x<<"   "<<savepoint->y<<"    "<< savepoint->info << endl;
    //cout是为了查看savepoint接受后哪出现了问题
 }

 

 

问题:

每次客户端的传送的鼠标信息结构体,在接收端收不到savepoint->info的信息,甚至会出现乱码

而且每次输出应该是客户端发出一个x,y坐标和info信息,接收端照实接收

但是接受端会受到四个LONG型,没有info信息,如同下图

后续不知道怎么改这一段代码,可以让标识info可以正常传输并输出

昨天也写过这个代码,没有保存下来,但是可以完整传输,今天又写了一遍,出现了这种问题,查了很多文章,也没有找到解决办法  

这两天需要完成学校的项目,也非常急迫的,调试了一下午还没有弄出来,实在没有头绪了