Какой самый быстрый способ сериализации дерева свойств наддува (ptree) в вектор - PullRequest
0 голосов
/ 17 мая 2018

У меня есть этот код:

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 голосов
/ 17 мая 2018

Я бы, вероятно, просто записал в поток, который находится в потоке, вокруг back_inserter_device: https://www.boost.org/doc/libs/1_67_0/libs/iostreams/doc/classes/back_inserter.html

Вы также можете объединить это с Boost Serialization, см .:

В этом случае использование binary_oarchive и использование no_header архивных флагов уменьшит объем данных.

...