json — Boost c ++ и карта свойств — получение массива в вектор

Как получить массив в вектор из stl с помощью карты свойств boos, декодированной из json

               hash = {'time_series':[1.0,1.0])ptree pt2;
std::istringstream is (content); read_json (is, pt2);
std::vector<double> time_series = pt2.get("time_series");

../src/rtbTimeSeries.cpp:172:62: error: no matching function for call to ‘boost::property_tree::basic_ptree<std::basic_string<char>, std::basic_string<char> >::get(const char [12])’

1

Решение

Вы должны использовать что-то вроде этого

std::vector<double> v;
pt::ptree subtree = p.get_child("time_series");
for (const auto& tree : subtree)
{
v.push_back(tree.second.get<int>(""));
}
for (auto i : v)
{
std::cout << i << std::endl;
}

http://liveworkspace.org/code/WlrPt$ 16

1

Другие решения

Ваша ошибка возникает в первую очередь потому, что вы не указали тип шаблона для get функция. Пожалуйста, смотрите Пятиминутный урок чтобы увидеть, как читать массив.

Нет простого способа прочитать контейнер как контейнер, но кажется возможным получить итераторы детям. Может быть возможно использовать это с конструктором вектора.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector