boost::property_tree

トップページ > 入出力 >

abstract

必要なヘッダ
<boost/property_tree/ptree.hpp> (メイン)
<boost/property_tree/xml_parser.hpp> (XML読み書き)
<boost/property_tree/json_parser.hpp> (JSON読み書き)
<boost/property_tree/ini_parser.hpp> (INI読み書き)
<boost/property_tree/info_parser.hpp> (INFO読み書き)
...
出来ること
汎用木構造型コンフィグ管理
リファレンス
en

sample

サンプルの動作確認バージョン [GCC4.4/1.42.0] [VC9/1.42.0]

#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
using namespace std;

int main()
{
	// JSON読み込み
	boost::property_tree::ptree t;
	read_json("example.json", t);

	// Image.Width を表示
	cout << t.get<int>("Image.Width") << endl;

	// Image.Thumbnail.Url を表示
	cout << t.get<string>("Image.Thumbnail.Url") << endl;

	// Image.IDs ノードを取得
	boost::property_tree::ptree& id = t.get_child("Image.IDs");
	BOOST_FOREACH(const boost::property_tree::ptree::value_type& e,id) // 子供を順番に表示
		cout << e.second.data() << endl;

	// 編集
	t.put("Image.Width", 1200);
	t.put("Image.Height", 960);
	t.add("Memo", "Modified!!");

	// cout へ出力
	cout << "--------" << endl;
	write_json(cout, t);
}

example.json の例

// http://www.ietf.org/rfc/rfc4627.txt
{
      "Image": {
          "Width":  800,
          "Height": 600,
          "Title":  "View from 15th Floor",
          "Thumbnail": {
              "Url":    "http://www.example.com/image/481989943",
              "Height": 125,
              "Width":  "100"
          },
          "IDs": [116, 943, 234, 38793]
     }
}

出力例

800
http://www.example.com/image/481989943
116
943
234
38793
--------
{
    "Image":
    {
        "Width": "1200",
        "Height": "960",
        "Title": "View from 15th Floor",
        "Thumbnail":
        {
            "Url": "http://www.example.com/image/481989943",
            "Height": "125",
            "Width": "100"
        },
        "IDs":
        [
            "116",
            "943",
            "234",
            "38793"
        ]
    },
    "Memo": "Modified!!"
}

etc

XML や JSON などのツリー構造のアプリケーション設定データを扱うためのライブラリです。 使い方は簡単で、上記のサンプルにあるように、read_xxx/write_xxx で ptree オブジェクトにファイル等から読み書きして、 get, get_child, put, add でデータを読んだり書いたりします。 削除は erase です。

see also

presented by k.inaba (kiki .a.t. kmonos.net) under CC0