以文件名为键提升属性树

时间:2009-12-22 19:56:40

标签: c++ boost boost-propertytree

我正在尝试将文件名用作boost::PropertyTree

中的键

然而,'。'文件名中的字符(例如“example.txt”)会导致在属性树中添加其他图层。最明显的解决方案是替换'。'与另一个角色,但有可能有更好的方法,例如使用转义字符。

在下面的示例中,值10将放在节点'txt'中,'example'的子节点。相反,我希望将值10存储在节点'example.txt'中。

ptree pt;
pt.put("example.txt", 10);

如何为单个节点使用完整文件名?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:10)

只需明确插入树:

pt.push_back(ptree::value_type("example.txt", ptree(10)));

put方法只是为了方便,这就是为什么它会自动解析.作为附加层。像我上面所示显式构造value_type可以避免这个问题。

解决问题的另一种方法是在putget中使用额外的参数,这会更改分隔符。

pt.put('/', "example.txt", "10");
pt.get<string>('/', "example.txt");

为了记录,我以前从未使用过这门课程。我从您链接的页面获得了所有这些信息; )

答案 1 :(得分:7)

问题是文档已经过时了。必须按如下方式创建路径类型对象,另一个字符对于指定为分隔符的文件路径无效,如下所示:

pt.put(boost::property_tree::ptree::path_type("example.txt", '|'), 10);

我从Philippe Vaucher发布的新闻组gmane.comp.lib.boost.devel的boost邮件列表中找到了解决方案的路径。