我是使用属性树进行 json 解析的新手。
如果我有这个哈希:
foo = {'test1',true}
ptree pt;
bool v = pt.get<bool>("test2");
我需要检查一个密钥是否存在,如果没有将其设置为 false。
我该如何优雅地做到这一点?
谢谢
我是使用属性树进行 json 解析的新手。
如果我有这个哈希:
foo = {'test1',true}
ptree pt;
bool v = pt.get<bool>("test2");
我需要检查一个密钥是否存在,如果没有将其设置为 false。
我该如何优雅地做到这一点?
谢谢
// bool optional
boost::optional<bool> v = pt.get_optional<bool>("test2");
// any type actually
boost::optional<std::string> v2 = pt.get_optional<std::string>("test3");
if (v) // key exists
bool bool_value = v.get();
else // not exists
v.set(false);
从 boost文档中,您可以尝试找到密钥,如果not_found()
那样,您可以推送一个新密钥。
assoc_iterator not_found() ; 返回未找到的迭代器。等效于真实关联容器中的 end()。
const_assoc_iterator not_found() 常量;返回未找到的迭代器。等效于真实关联容器中的 end()。
assoc_iterator find(const key_type & key) ; 查找具有给定键的孩子,如果没有,则查找 not_found()。如果多个具有相同的密钥,则无法保证返回哪个孩子。
const_assoc_iterator find(const key_type & key) const; 查找具有给定键的孩子,如果没有,则查找 not_found()。如果多个具有相同的密钥,则无法保证返回哪个孩子。