我试图读取泄气的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::分配器, boost::iostreams::p ublic_>&, boost::p roperty_tree::p tree&)'
问题是如何在不进行不必要的数据复制的情况下将filtering_streambuf传递给read_json?
read_json
需要文件名或包含 JSON 内容的流。您正在尝试传递流缓冲区,但它不知道如何处理它。
作为解决方案,只需将流缓冲区传递给使用它的istream
并将其传递给read_json
:
std::istream input(&in_buf);
read_json(input, pt);