您的位置:首页 > 编程语言 > C语言/C++

C# C++ 相互序列化

2009-01-08 18:21 204 查看
最近项目需要,为了解决C++和C#之间Socket通信,能够传对象。

写了个C++序列化的功能主要是兼容C#序列化的格式,这样用C++序列化的xml,可以用C#反序列化回来,反之同理。

不敢藏起来,拿出来同大家分享。

话不多说,直接上代码。http://files.cnblogs.com/ShadowK/seri.rar

C#部分。

public class MidClass

public class TestClass

class Program

#pragma once

#include "stdafx.h"

#include "Markup.h"

#include "string.h"

#include "string"

#include <list>

using namespace std;

//Xml序列化基类,要序列化的对象需要继承该类。

//目前支持的字段类型为:字符串,字符串列表,对象,对象列表。

class XmlSerialize

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

//实例化一个将被序列化的类。

TestClass t1;

t1.P1 = "this is a string";

t1.P2.AddTail(CString("string list 1"));

t1.P2.AddTail(CString("string list 2"));

t1.P3.P1 = "object";

MidClass m1;

MidClass m2;

m1.P1 = "object list 1";

m2.P1 = "object list 2";

t1.P4.AddTail(m1);

t1.P4.AddTail(m2);

//序列化。

//可以把序列化后的xml拿到c#反序列化。

CString xml = t1.Serialize();

//反序列化,可以输入一个由C#对象序列化后的xml,

//注意C#对象字段不能为null,如果是能为null的字段(如string),请初始化为空串。

TestClass t2;

t2.Deserialize(xml);

return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: