2013-02-22 103 views
3

我是json解析的新手,使用属性树进行提升。提升C++属性 - 如果键不存在,则设置为false

如果我有这样的哈希:

foo = {'test1',true} 

ptree pt; 
bool v = pt.get<bool>("test2"); 

我需要检查一个键是否存在,如果不将其设置为false。

我该如何优雅地做到这一点?

感谢

回答

2

从升压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()。没有 保证哪个孩子返回多个具有相同的密钥。

5
// 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); 
+0

在docs它在哪里说,'推动::可选 V2 = pt.get_optional ( “TEST3”);'是允许即使test3'的'值类型不是一个字符串? (我已经搜索,但无法找到它。) – Olumide 2017-02-10 17:41:08

相关问题