Boost には、ファイルから XML をロードする方法に関するチュートリアルがあります。コードで作成した文字列またはユーザーから受け取った文字列 (例: cin
) をフィードするにはどうすればよいですか?
11357 次
3 に答える
13
Heresは私のために働くいくつかのコード...
// Create an empty property tree object
ptree xmlTree;
// Read the XML config string into the property tree. Catch any exception
try {
stringstream ss; ss << xmlConfigString;
read_xml(ss, xmlTree);
}
catch (xml_parser_error &e) {
LOGERROR ("Failed to read config xml " << e.what());
}
catch (...) {
LOGERROR ("Failed to read config xml with unknown error");
}
于 2011-12-16T15:54:58.327 に答える
12
文字列を でラップしますistringstream
。
于 2011-03-13T11:35:00.773 に答える
10
istringstream
使用するとバッファ全体が不必要にコピーされるため、他の答えは理想的ではありません。
この質問に対する回答が示唆するように、 deprecated を使用できますistrstream
が、これにより警告が生成され、将来削除される可能性があるため、より良い解決策はboost::iostreamsを使用することです:
boost::iostreams::stream<boost::iostreams::array_source> stream(moo.c_str(), moo.size());
boost::property_tree::read_json(stream, tree);
これにより、同じ方法でバッファを不必要にコピーすることが回避されistrstream
(入力バッファが大きい場合、これはかなりの問題になる可能性があります)、独自のストリーム クラスを作成する必要がなくなります。
于 2016-06-08T21:06:18.900 に答える