提升c++属性-若键不存在,则设置为false

Boost c++ property - if key does not exist then set to false

本文关键字:设置 false 不存在 c++ 属性 提升      更新时间:2023-10-16

我是使用属性树进行json解析的新手。

如果我有这个散列:

foo = {'test1',true}
ptree pt;
bool v = pt.get<bool>("test2");

我需要检查一个密钥是否存在,如果没有设置为false。

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

感谢

  // 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);

从boost文档中,您可以尝试找到密钥,如果是not_found(),则可以推送新密钥。

assoc_titerator not_found();返回未找到的迭代器。等效于实际关联容器中的end()。

const_assoc_iterator not_found()const;返回未找到的迭代器。等效于实际关联容器中的end()。

assoc_titerator find(const key_type&key);查找具有给定的键,如果没有,则为not_found()。无法保证如果多个具有相同的密钥,则返回哪个子项。

const_assoc_iterator find(const key_type&key)const;查找孩子使用给定的键,如果没有,则使用not_found()。没有保证在多个具有相同密钥的情况下返回哪个子项。