提升 属性 树值(反)序列化

boost property tree value (de-)serialization

tl;博士 有没有办法覆盖 boost.property_tree 序列化 bool(其他内置)值的方式?

我即将用 boost.property_tree 替换一个自写的键值存储。因此,在第一个 运行 中,我将实现更改为使用 boost.property_tree 但现在我碰壁了,因为旧的实现使用整数 0/1 来表示 bool 值,而 property_tree 使用 true/false。

因此,在序列化 ptrees 时,我的文件中得到 true/false 个字符串。这使得生成的文件不能向后兼容我们软件的旧版本,这是我目前不愿意走的路。

我发现一个旧的 post boost property tree put/get DBL_MAX 将方法更改为 write/read 双精度值但是当我对 bool 尝试相同的方法时,我得到一个编译器错误,该结构是已经定义(在 ptree_translator.hpp 中是正确的)。

这意味着您不能使用此机制,因为库已经使用了自定义点。

  • 你可能不需要这个

    看来阅读端已经支持老格式了。所以,你应该很好地阅读旧格式。

  • 您可以使用强类型定义(或像 Bool { my_false_rep, my_true_rep } 这样的自定义枚举),您 可以 使用自定义点而不会发生冲突。