読者です 読者をやめる 読者になる 読者になる

GameProgrammar's Night

ゲームプログラム系の覚え書き

Boost.Property TreeでXML文字列を直接使う方法

std::stringstreamを使う

 read_xml関数には、第一引数にstd::istreamを受け取るオーバーロード関数が用意されていますので、そっちを使います。文字列のstream実装にはstd::stringstreamがあります。(lexical_castのバックエンドで動いてるやつです)

#include <sstream>

std::stringstream ss;
ss << "<xml></xml>";

boost::property_tree::ptree pt;
boost::property_tree::xml_parser::read_xml(ss, pt);

 ググってもファイル名を渡す方法ばかり紹介されて、文字列を渡す方法が見つからなかったので調べてみました。
 もちろん、read_json/read_iniでも同じ方法で文字列を渡すことができます。