我是json解析的新手,使用属性树进行提升。提升C++属性 - 如果键不存在,则设置为false
如果我有这样的哈希:
foo = {'test1',true}
ptree pt;
bool v = pt.get<bool>("test2");
我需要检查一个键是否存在,如果不将其设置为false。
我该如何优雅地做到这一点?
感谢
我是json解析的新手,使用属性树进行提升。提升C++属性 - 如果键不存在,则设置为false
如果我有这样的哈希:
foo = {'test1',true}
ptree pt;
bool v = pt.get<bool>("test2");
我需要检查一个键是否存在,如果不将其设置为false。
我该如何优雅地做到这一点?
感谢
从升压documentation你可以尝试找到钥匙,如果not_found()
然后你可以把一个新的关键。
assoc_iterator not_found();返回未找到的迭代器。 等效于实际关联容器中的end()。
const_assoc_iterator not_found()const;返回未找到的迭代器 。等同于实际关联容器中的end()。
assoc_iterator find(const key_type & key);找到给定密钥为 的孩子,如果没有,则找到not_found()。不保证 多个关键字相同时返回哪个孩子。
const_assoc_iterator find(const key_type & key)const;用给定的键找到一个孩子 ,如果没有,则找到not_found()。没有 保证哪个孩子返回多个具有相同的密钥。
// 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);
在docs它在哪里说,'推动::可选 V2 = pt.get_optional ( “TEST3”);'是允许即使test3'的'值类型不是一个字符串? (我已经搜索,但无法找到它。) –
Olumide
2017-02-10 17:41:08