boost 序列化成 xml文件
来源:互联网 发布:phpstudy切换php版本 编辑:程序博客网 时间:2024/04/29 16:30
#include "stdafx.h"
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/serialization/map.hpp>
#include <fstream>
#include <iostream>
class TestClass
{
public:
TestClass()
{
m_cMember1 = 'm';
m_strMemberName = "Hello.";
m_nData = 1;
}
char m_cMember1;
std::string m_strMemberName;
int m_nData;
// 串行化的函数,这一个函数完成对象的保存与恢复
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
// 注意这个宏(变量名存储进去, XML文件的节点将作为节点的名称)
ar & BOOST_SERIALIZATION_NVP(m_cMember1);
ar & BOOST_SERIALIZATION_NVP(m_strMemberName);
ar & BOOST_SERIALIZATION_NVP(m_nData);
}
};
typedef std::map<std::string, TestClass> MapTestClass;
int _tmain(int argc, _TCHAR* argv[])
{
MapTestClass mapTestClass;
/////////////////////////////////////////////////////////////////
// 读取xml文件中的数据
//读取Member.xml文件以初始化表示用户信息的m_mapUserinfo
std::ifstream fin("./abc.xml");
if (fin)
{
boost::archive::xml_iarchive ia(fin); // 文本的输入归档类
// 注意这一段宏, 在读操作时mapTestClass的命名无所谓,
// 估计boost库中会查找与该结构"匹配"的数据来读写
ia >> BOOST_SERIALIZATION_NVP(mapTestClass); // 恢复到m_mapUserinfo对象
fin.close();
return 0;
}
/////////////////////////////////////////////////////////////////
mapTestClass["justTest"].m_strMemberName = "test----";
/////////////////////////////////////////////////////////////////
// 写入数据
std::ofstream fout("./abc.xml");
if (fout)
{
// 注意这一段宏, 在读操作时mapTestClass的命名无所谓,
// 估计boost库中会查找与该结构"匹配"的数据来读写
// 但在写入文件时, 如果mapTestClass这个命名有一些特殊符号
// 例如: ::mapTestClass, *mapTestClass , 此时写入数据就会
// 报错, 因为*mapTestClass传入时, xml的节点的名称就是
// "*mapTestClass"了, 这样会造成异常
boost::archive::xml_oarchive oa(fout); // 文本的输出归档类,使用一个ostream来构造
oa << BOOST_SERIALIZATION_NVP(mapTestClass); // 保存obj对象
fout.close(); // 关闭文件
return 0;
}
system("pause");
return 0;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="5">
<mapTestClass class_id="0" tracking_level="0" version="0">
<count>1</count>
<item_version>0</item_version>
<item class_id="1" tracking_level="0" version="0">
<first>justTest</first>
<second class_id="2" tracking_level="0" version="0">
<m_cMember1>109</m_cMember1>
<m_strMemberName>test----</m_strMemberName>
<m_nData>1</m_nData>
</second>
</item>
</mapTestClass>
- boost 序列化成 xml文件
- boost 序列化成 xml文件
- 将类序列化成xml文件
- 将对象序列化成XML文件
- XML如何序列化成字符串
- C#序列化成XML注意事项
- 将XML序列化成对象
- java类序列化成xml 方法
- java类序列化成xml 方法
- C#基于DataContract序列化成XML格式
- 我的WCF之旅(4):WCF中的序列化[上篇] 、.net对象序列化成xml文件Mapping
- 对象序列化成XML存储,XML反序列换成对象
- C#/.NET 将对象序列化成XML和将XML反序列化成对象
- XStream实现java对象的序列化成xml和反序列化成java对象
- C# XML Serialization序列化成字符串含有65279
- boost库xml序列化
- boost库xml序列化
- BOOST xml 序列化用法
- 常用網址
- JavaScript的Table表格对象
- vb下的with语句定义BITMAPINFO类型的变量
- 图的广度优先搜素
- JAVA中替换一些特殊字符的方法
- boost 序列化成 xml文件
- S3C2410中的脉宽调制定时器(PWM)
- JSBL_事件及DOM操作
- maven2 依赖包的复制
- GridView各个事件中,怎样获取主键值
- FCLK PCLK HCLK
- AJAX中同时发送多个请求XMLHttpRequest对象处理方法
- 上班真累
- 修改VS2008模板,添加版权信息