C/C++对象的序列化

原创 2017年08月28日 20:33:51

序列化 (Serialization):也称为串行化指的是将一个内存对象 转换成 一串字节数据,并可以恢复。

序列化:将对象转成一串字节,这一串字节可以保存至文件,也可以通过网络传输。

下面是代码:

IDE为vs2013

#include <stdio.h>
#include <string>
using namespace std;

class Student
{
public:
	int id;
	string name;
};

//序列化
int Serialize(const Student &s, char output[])
{
	int count = 0;
	memcpy(output, &s.id, 4);
	count += 4;
	memcpy(output + count, s.name.c_str(), s.name.length());
	count += s.name.length();
	return count;
}

//反序列化
int Deserialize(Student &s, const char *input, int count)
{
	int offset = 0;
	memcpy(&s.id, input, 4);
	offset += 4;
	s.name.append(input + offset, count - offset);

	return 0;
}

int main()
{
	char buf[128];
	int count = 0;

	Student s1;
	s1.id = 110120119;
	s1.name = "雅瞄蝶";
	count = Serialize(s1, buf);

	Student s2;
	Deserialize(s2, buf, count);

	return 0;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

像原生C/C++,序列化Java对象

你曾经希望能够将Java对象object快速地转化为字节流,就像原生语言Java?如果你使用标准的Java Serialization,你会对它的性能感到非常失望。Java Serialization...
  • fenghuangdesire
  • fenghuangdesire
  • 2015年11月01日 17:45
  • 841

c++对象的序列化与反序列化的解决方案----flatbuffers的使用

c++对象的序列化与反序列化的解决方案----flatbuffers的使用 概述   本篇blog主要是给大家介绍FlatBuffers的相关的信息和用法,当我在了解的FlatBu...
  • linuxheik
  • linuxheik
  • 2017年04月25日 16:01
  • 510

C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化

本文是基本上一篇博文进行改进而成,上一篇请见: C++对象的JSON序列化与反序列化探索 此处就不多说了,直接上代码。 1. 序列化基类 #pragma once #include ...
  • TragicGuy
  • TragicGuy
  • 2013年06月22日 23:20
  • 2338

C#对象序列化详解

C#中的序列化主要是通过一个格式化工具获取某个自定义类型对象中的所有数据成员并写入传入的一个文件流中,或者从文件流对象中               解析出某个自定义类型对象中的所有数据成员并赋值到...
  • u011390632
  • u011390632
  • 2013年12月08日 17:30
  • 1826

redis采用序列化方案存对象

前几天被问到这样一个问题,redis怎么存对象,平时也没怎么注意,只知道redis存字符之类的,不过就是根据键存取值,不过对象的话还是不同的首先来了解一下为什么要实现序列化为什么要实现序列化接口当一个...
  • Heaven_of_relaxing
  • Heaven_of_relaxing
  • 2016年07月01日 14:19
  • 775

二叉树的序列化和反序列化实现(C++)

题目: 实现二叉树的序列化和反序列化的函数。 思路:         二叉树的序列化 即给定二叉树的头指针,按照某种遍历方式将所有结点链接为一个数组或字符串(/指针)。        ...
  • u013575812
  • u013575812
  • 2015年12月05日 14:39
  • 1194

C/C++结构体序列化配置模板化

用C/C++写后台服务程序的工程师也许经常会遇到这样的问题:总有一些重要的数据是通过字符串的方式输出,比如jsonp、xml、pvlog等等。比如日志格式,往往都是通过snprintf/std::co...
  • catxl313
  • catxl313
  • 2014年05月09日 23:39
  • 4955

Java对象序列化详解

所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。一、定义  序列化:把Java对象转换为字节序列的过程。      反序列化:把字节序列恢复为Java对象的过程...
  • zcl_love_wx
  • zcl_love_wx
  • 2016年08月10日 14:47
  • 4323

c++读写类对象(含有指针成员)

#include #include #include using namespace std; //有很多通用的序列化库,比如boost::serialization,可以google c++...
  • bladeandmaster88
  • bladeandmaster88
  • 2016年11月18日 15:51
  • 594

Java 对象序列化机制详解

对象序列化的目标:将对象保存到磁盘中,或允许在网络中直接传输对象。 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流...
  • zuiwuyuan
  • zuiwuyuan
  • 2014年10月09日 22:24
  • 1061
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++对象的序列化
举报原因:
原因补充:

(最多只允许输入30个字)