string、vector和map的序列化和反序列化

最近在做序列化和反序列化的学习,在此记录一下,以后写了新的数据类型再加进来。

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")

using namespace  std;

void serialize(char *sendBuf, const string & str, int &step);
void deserialize(string & str, const char *recvBuf, int &step);




//对于基础类型的序列化
//Det:sendBuf的首地址
//Src:简单数据类型的地址
//size:数据类型的长度
//step:写的时候的偏移量
/********int************/
void serialize(char  *Det,const int * Src ,int &step)
{
	memcpy(Det + step, Src, sizeof(int));
	step += sizeof(int);
}

//对于基础类型的反序列化
//Det:解析出来后要存放的位置的首地址
//Src:recvBuf的首地址
//step:写的时候的偏移量
void deserialize(int * Det, const char *Src, int &step)
{
	memcpy(Det, Src + step, sizeof(int));
	step += sizeof(int);
}
/********char************/
void serialize(char  *Det, const char * Src, int &step)
{
	memcpy(Det + step, Src, sizeof(int));
	step += sizeof(int);
}
void deserialize(char * Det, const char *Src, int &step)
{
	memcpy(Det, Src + step, sizeof(int));
	step += sizeof(int);
}
/********long************/
void serialize(char  *Det, const long * Src, int &step)
{
	memcpy(Det + step, Src, sizeof(int));
	step += sizeof(int);
}
void deserialize(long * Det, const char *Src, int &step)
{
	memcpy(Det, Src + step, sizeof(int));
	step += sizeof(int);
}
/********double************/
void serialize(char  *Det, const double * Src, int &step)
{
	memcpy(Det + step, Src, sizeof(int));
	step += sizeof(int);
}
void deserialize(double * Det, const char *Src, int &step)
{
	memcpy(Det, Src + step, sizeof(int));
	step += sizeof(int);
}
/********float************/
void serialize(char  *Det, const float * Src, int &step)
{
	memcpy(Det + step, Src, sizeof(int));
	step 

你可能感兴趣的:(C++,C++,string,vector,map,序列化和反序列化)