3

プロパティツリーを使用してブーストを使用してjsonを解析するのは初めてです。

このハッシュがある場合:

foo = {'test1',true}

ptree pt;
bool v = pt.get<bool>("test2");

キーが存在することを確認する必要があります。存在しない場合はfalseに設定します。

どうすればそれを優雅に行うことができますか?

ありがとう

4

2 に答える 2

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);
于 2013-02-22T09:19:25.690 に答える
2

Boostのドキュメントから、キーを見つけて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()を検索します。複数の子が同じキーを持っている場合、どの子が返されるかについての保証はありません。

于 2013-02-22T06:46:52.193 に答える