Boost C++ 库

...世界上最受尊敬和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

第 31 章。Boost.PropertyTree

Marcin Kalicinski

Sebastian Redl

根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 处复制)

目录

什么是 Property Tree?
五分钟教程
作为容器的 Property Tree
Property Tree 概要
如何填充 Property Tree
XML 解析器
JSON 解析器
INI 解析器
INFO 解析器
如何访问 Property Tree 中的数据
附录
参考
头文件 <boost/property_tree/exceptions.hpp>
头文件 <boost/property_tree/id_translator.hpp>
头文件 <boost/property_tree/info_parser.hpp>
头文件 <boost/property_tree/ini_parser.hpp>
头文件 <boost/property_tree/json_parser.hpp>
头文件 <boost/property_tree/ptree.hpp>
头文件 <boost/property_tree/ptree_fwd.hpp>
头文件 <boost/property_tree/ptree_serialization.hpp>
头文件 <boost/property_tree/stream_translator.hpp>
头文件 <boost/property_tree/string_path.hpp>
头文件 <boost/property_tree/xml_parser.hpp>

Property Tree 库提供了一种数据结构,用于存储任意深度嵌套的值树,在每一层通过某个键进行索引。树的每个节点存储其自身的值,以及其子节点及其键的有序列表。该树允许通过路径轻松访问其任何节点,该路径是多个键的串联。

此外,该库还为多种可由这样的树表示的数据格式(包括 XML、INI 和 JSON)提供了解析器和生成器。

Property Tree 是通用的数据结构,但特别适合用于保存配置数据。该树提供其自身的特定于树的接口,并且每个节点对于其子节点而言也是一个 STL 兼容的序列。

从概念上讲,可以将节点视为以下结构

struct ptree
{
   data_type data;                         // data associated with the node
   list< pair<key_type, ptree> > children; // ordered list of named children
};

key_type 和 data_type 在某种程度上是可配置的,但通常是 std::string 或 std::wstring,并且解析器仅适用于这种类型的树。

许多软件项目在其生命周期的某个时刻都会开发类似的工具,而 property tree 也以相同的方式起源。我们希望该库可以避免许多人重复造轮子。


PrevUpHomeNext