And*_*ndt 11 c++ boost boost-propertytree
我试图使用文件名作为boost :: PropertyTree中的键
然而 '.' 文件名中的字符(例如"example.txt")会导致在属性树中添加其他图层.最明显的解决方案是替换'.' 与另一个角色,但有一个更好的方法来做到这一点,例如使用转义字符.
在下面的示例中,值10将放在节点'txt'中,'example'的子节点.相反,我希望将值10存储在节点'example.txt'中.
ptree pt;
pt.put("example.txt", 10);
Run Code Online (Sandbox Code Playgroud)
如何为单个节点使用完整文件名?
在此先感谢您的帮助!
Pet*_*der 11
只需显式插入树:
pt.push_back(ptree::value_type("example.txt", ptree(10)));
Run Code Online (Sandbox Code Playgroud)
该put方法只是为了方便,这就是它自动解析.为附加层的原因.像我上面所示显式构造value_type可以避免这个问题.
解决问题的另一种方法是在putand中使用额外的参数get,这会更改分隔符.
pt.put('/', "example.txt", "10");
pt.get<string>('/', "example.txt");
Run Code Online (Sandbox Code Playgroud)
为了记录,我以前从未使用过这门课程.我从您链接的页面获得了所有这些信息; )
问题是文档已经过时了.必须按如下方式创建路径类型对象,其他字符对于指定为分隔符的文件路径无效,如下所示:
pt.put(boost::property_tree::ptree::path_type("example.txt", '|'), 10);
Run Code Online (Sandbox Code Playgroud)
我从Philippe Vaucher发布的新闻组gmane.comp.lib.boost.devel的boost邮件列表中找到了解决方案的路径.
| 归档时间: |
|
| 查看次数: |
5202 次 |
| 最近记录: |