我是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