文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++中使用boost实现序列化

C++中使用boost实现序列化

时间:2010-03-15  来源:飞机人

什么是序列化,为什么要序列化?

(个人理解,欢迎讨论)

"序列化"是将数据结构进行“扁平化”,方便存储(如实验的中间数据)及传输(如网络应用程序的数据交换)。相对应的概念是“反序列化”,即从序列化后的数据中恢复相应数据结构。

如何实现序列化?

Java中有现成的包,实现方便。C++语言本身似乎没有该机制,需要借助第三方库(当然,对某些简单的数据结构,可以自己写代码,实现类似序列化功能)。

C++可以使用那些第三方库实现序列化?

1, "s11n", 一个专注于进行对象泛型序列化的开源工程。http://s11n.net/

2, "boost",是一个内容丰富的C++库。详细介绍见:http://en.wikipedia.org/wiki/Boost_C%2B%2B_Libraries 及 http://www.boost.org/。简单介绍摘要如下:

(a), The Boost C++ libraries are a collection of peer-reviewed, open source libraries that extend the functionalities of C++.

(b), The current release of Boost contains over 80 individual libraries including libraries for linear algebra, multithreading, image processing, regular expressions, unit testing, and others.

(c), The majority of Boost libraries are header based, consisting of inline functions and templates, and as such do not need to be built in advance of their usage.

(d), There are some libraries, however, that require separate building: Boost.Filesystem, Boost.Serialization, ...

如何安装Boost C++ Libraries?

(a), 到http://www.boost.org/users/download/ 下载相应文件并解压。

(b), 运行解压目录下的“bootstrap.bat”, 该批处理文件运行结束后,本机目录里会出现一个名为"bjam.exe"的程序。该程序(我的理解)编译生成操作系统(我用的windows XP)正常使用Boost所需的”中间库“(毕竟,Boost是平台无关的,要在特定平台上使用,需要一些”中间件“)。运行结束后,本机目录中会多出”stage“文件夹,里面便是”中间库“。

(c), 将解压目录下”boost“文件夹下包括了所有Boost库的头文件。需要将该路径加到项目的头文件搜索路径(如果使用IDE的话)。同样,需要将”stage“文件夹路径加到项目的"library file directories”。

(d), 测试。copy http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/index.html中"a simple example“的代码,能正确运行就ok了。

使用Boost进行C++序列化?

参考boost serialization 的 documentation吧。


注意。

Boost已经补全了对STL若干容器,如vector等,的序列化支持。但是需要显示include相应头文件。如<boost/serialization/vector.hpp>(位于boost/serialization文件夹下)。否则,编译时报错:serialize is not a function of vector... 即vector不是可序列化的。


好运。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载