将boost属性树(ptree)序列化为向量的最快方法是什么?

时间:2018-05-17 14:41:13

标签: c++ boost stdvector boost-propertytree

我有这段代码:

std::vector<uint8_t> getWriteBuffer()
{
    boost::property_tree::ptree jsonTree=getJson();  //This function returns a json  in a ptree

    // I have this code, but is there any faster way to do this?
    std::ostringstream jsonStream;
    boost::property_tree::write_json(jsonStream, jsonTree);
    std::string jsonString = jsonStream.str();
    std::vector<uint8_t> output(jsonString.begin(), jsonString.end());
    return output;
}

作为代码,我可以通过将Ptree写入字符串流,然后将其转换为字符串然后将其复制到缓冲区来完成此操作。

有没有更快的方法呢?

1 个答案:

答案 0 :(得分:0)

我可能只是写一个位于back_inserter_device附近的streambuffer上的流:https://www.boost.org/doc/libs/1_67_0/libs/iostreams/doc/classes/back_inserter.html

您还可以将其与Boost序列化结合使用,请参阅:

在这种情况下,使用binary_oarchive并使用no_header存档标志会减少数据量。