2013-02-22 102 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

相關問題