【发布时间】:2009-12-22 19:56:39
【问题描述】:
我正在尝试使用文件名作为boost::PropertyTree 中的键
但是,'.'文件名中的字符(例如“example.txt”)会导致在属性树中添加一个附加层。最明显的解决方案是替换 '.'使用另一个字符,但可能有更好的方法来执行此操作,例如使用转义字符。
在下面的示例中,值 10 将被放入节点 'txt',它是 'example' 的子节点。相反,我希望将值 10 存储在节点“example.txt”中。
ptree pt;
pt.put("example.txt", 10);
如何为单个节点使用完整的文件名?
提前感谢您的帮助!
【问题讨论】:
-
顺便说一句:使用文件名作为键是很棘手的。您是否考虑过存在硬链接时会发生什么?符号链接?在您的进程之外发生的重命名? Windows 上不区分大小写? Windows 会截断文件名中的尾随空格这一事实?
-
幸运的是,这是一个只读操作,前提是在此操作期间目录的内容不会改变。不过,感谢您指出其他问题。
-
我的观点是,其中一些事情(如链接的存在)可能会导致误报。只是要记住一些事情,特别是如果您要将其用于某种安全功能。
标签: c++ boost boost-propertytree