我有这段代码:
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写入字符串流,然后将其转换为字符串然后将其复制到缓冲区来完成此操作。
有没有更快的方法呢?
答案 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
存档标志会减少数据量。