当前位置: 首页 > 知识库问答 >
问题:

提升property_tree::json_parser::read_json

江雅懿
2023-03-14

我正在尝试读取压缩的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::public_

问题是如何将filtering_streambuf传递给read_json而不进行不必要的数据复制?

共有1个答案

荀靖
2023-03-14

read_json需要文件名或包含json内容的流。您试图传递一个流缓冲区,但它不知道如何处理它。

作为一种解决方案,只需将流缓冲区传递给使用它的istream并将其传递给read_json

std::istream input(&in_buf);
read_json(input, pt);
 类似资料:
  • 提升(Boosting) 1. 提升 到目前为止,我们已经了解了如何在已经选择了数据表示的情况下解决分类(和其他)问题。我们现在讨论一个称为boost的过程,它最初是由Rob Schapire发现的,后来由Schapire和Yoav Freund进一步开发,它自动选择特性表示。我们采用了一种基于优化的视角,这与Freund和Schapire最初的解释和论证有些不同,但这有助于我们的方法的理解: $

  • 我正在我的程序中使用提升property_tree。我已将树设置为使用自定义路径类型。我正在寻找的是获取特定节点的父节点ID。 下面是一个例子: 结果如预期: 我需要的是一种不永久存储节点的完整id的方法。我想的是一种简单地获取它的父节点id并将其推到路径的前面等等到顶层的方法。但是我似乎在property_tree中找不到这样做的方法。这可能吗?如果没有,对于这种情况还有其他计算完整路径的方法吗

  • 本文向大家介绍详解javascript中的变量提升和函数提升,包括了详解javascript中的变量提升和函数提升的使用技巧和注意事项,需要的朋友参考一下 1在js中只有两种作用域 a:全局作用域 b:函数作用域 在ES6之前,js是没有块级作用域。 首先来解释一下什么是没有块级作用域? 所以此时 是可以打印输出变量a的值。 2:什么是变量提升? 在我们的js中,代码的执行时分两步走的,1、解析

  • 本文向大家介绍基于js的变量提升和函数提升(详解),包括了基于js的变量提升和函数提升(详解)的使用技巧和注意事项,需要的朋友参考一下 一、变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。 上个简历的例子如: 之所以会是以上的打印结果,是由于js的变量提升,实际上上面的

  • 问题内容: 如果涉及通配符,有什么办法可以加快mysql等操作员的性能吗?例如。如“%test%” 问题答案: 如果查询看起来像或,MySQL可以使用索引。它可以将索引用于第一个通配符之前的任何部分或字符串。如果需要在字符串中的任意位置匹配单词,则可能需要考虑使用索引。 有关索引的更多详细信息: http //dev.mysql.com/doc/refman/5.1/en/mysql- index

  • GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。回顾下Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。 在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是$$f_{t-1}(x)