0

収縮したjsonを読み込もうとして、型変換の問題が発生しています。コードは次のとおりです。

boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
std::istringstream iss(std::ios::binary);
iss.rdbuf()->pubsetbuf(buf, len);
iss.imbue( std::locale("ru_RU.CP1251") );
in.push( boost::iostreams::zlib_decompressor() );
in.push( iss );

boost::property_tree::ptree pt;
boost::property_tree::json_parser::read_json(in, pt); // <-- Compile error

コンパイラは言う:

src / ABPacking.cpp:48:エラー:'read_json(boost :: iostreams :: filtering_streambuf、std :: allocator、boost :: iostreams :: public _>&、boost :: property_tree :: ptree&)の呼び出しに一致する関数がありません'</ p>

問題は、不要なデータをコピーせずにfiltering_streambufread_jsonに渡す方法です。

4

1 に答える 1

2

read_jsonJSON コンテンツを含むファイル名またはストリームのいずれかが必要です。ストリームbufferを渡そうとしていますが、どうすればよいかわかりません。

解決策として、ストリーム バッファをistreamそれを消費する に渡し、それを に渡すだけですread_json

std::istream input(&in_buf);
read_json(input, pt);
于 2012-09-22T10:53:36.310 に答える