簡體   English   中英

boost property_tree :: json_parser :: read_json&iostreams :: filtering_streambuf

[英]boost property_tree::json_parser::read_json & iostreams::filtering_streambuf

我試圖閱讀放氣的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&) “

問題是如何在不進行不必要的數據復制的情況下將filtering_streambuf傳遞給read_json

read_json需要文件名或具有JSON內容的 您正在嘗試傳遞流緩沖區 ,它不知道如何處理它。

作為解決方案,只需將流緩沖區傳遞給使用它的istream並將其傳遞給read_json

std::istream input(&in_buf);
read_json(input, pt);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM