提升c ++属性 - 如果key不存在则设置为false

Tam*_*mpa 3 c++ boost boost-propertytree

我是json使用属性树解析boost的新手.

如果我有这个哈希:

foo = {'test1',true}

ptree pt;
bool v = pt.get<bool>("test2");
Run Code Online (Sandbox Code Playgroud)

我需要检查存在的密钥,如果没有将其设置为false.

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

谢谢

use*_*204 6

  // 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);
Run Code Online (Sandbox Code Playgroud)