在boost :: property_tree中存储类

时间:2013-04-02 19:04:59

标签: c++ xml json boost

我正在开发一个程序来记录程序中变量的信息。我想按文件分组这些信息 - >功能 - >变量

boost :: property_tree似乎非常适合这个,因为我可以将Access对象存储在树(file.function.variable)中的路径上,然后轻松地将树转换为XML,JSON等。

假设我正在记录变量的使用次数。我可以有一个Access类来跟踪对变量的写入和读取次数。然后,我可以将此对象存储在树中的file.function.variable中。每次访问变量时,我都可以在树中找到变量并更新有关它的信息。

但是,我无法弄清楚如何在树中存储一个类。我假设有一些我需要实现或子类,但文档没有解决我正在尝试做的事情。

我的问题有解决方案吗?是否有更好的替代boost :: property_tree?

谢谢。

2 个答案:

答案 0 :(得分:0)

boost::property_tree旨在保存文本数据。这就是它适合导出到XML,JSON等的原因。

修改您的类Access,使其包含转换为/从文本转换的方法,并将该文本存储在树中。

答案 1 :(得分:0)

你可以放弃树的想法,只需坚持一个关键值对的平面图。

示例:

std::map<std::string, Access> accesses;
// add one access
accesses["file.function.variable"] += 1;

您只需编写一个从其内容生成JSON的例程,这应该很简单。 (假设密钥的第一部分始终是文件,第二部分始终是函数,第三部分始终是变量。)