0
我試着去閱讀癟JSON和體驗型轉換的問題,這裏是代碼提高property_tree :: json_parser :: read_json和輸入輸出流:: filtering_streambuf
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: error: no matching function for call to ‘read_json(boost::iostreams::filtering_streambuf, std::allocator, boost::iostreams::public_>&, boost::property_tree::ptree&)’
的問題是如何通過filtering_streambuf到read_json沒有不必要的數據複製?
你到底想幹什麼? 'read_json'需要一個文件或文件名作爲第一個參數,然後該文件被解析到作爲第二個參數傳遞的屬性樹中。 – Xeo
@Xeo no,read_json可以獲取std :: basic_istream和std :: string,請參閱[link](http://www.boost.org/doc/libs/1_41_0/doc/html/property_tree/reference.html#header .boost.property_tree.json_parser_hpp),所以我想傳遞從filtering_streambuf得到的流 – PSIAlt
Right-o,但是沒有需要流* buffer *的重載。只要把緩衝區放到'istream'中,你應該沒問題。 'std :: istream輸入(&in);'。 – Xeo