Я новичок в разборе JSON с Boost, используя дерево свойств.
Если у меня есть этот хэш:
foo = {'test1',true}
ptree pt;
bool v = pt.get<bool>("test2");
Мне нужно проверить, существует ли ключ, и если нет, установить его на false.
Как мне это сделать изящно?
Спасибо
От повышения документация вы можете попытаться найти ключ, и если not_found()
тогда вы можете нажать новый ключ.
assoc_iterator not_found (); Возвращает не найденный итератор.
Эквивалентен end () в реальном ассоциативном контейнере.const_assoc_iterator not_found () const; Возвращает не найденный
итератор. Эквивалентен end () в реальном ассоциативном контейнере.поиск_связчика (тип ключа const & ключ); Найти ребенка с
данный ключ или not_found (), если его нет. Нет гарантии
о том, какой ребенок возвращается, если у нескольких есть один и тот же ключ.const_assoc_iterator find (const key_type & ключ) 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);