Boost property_tree - работа с простыми массивами или контейнерами - PullRequest
3 голосов
/ 13 февраля 2011

Я загружаю INI-файл с помощью свойства property_tree. Мой INI-файл в основном содержит «простые» типы (то есть строки, целые, двойные и т. Д.), Но у меня есть некоторые значения, представляющие массив.

[Example]
thestring = string
theint = 10
theintarray = 1,2,3,4,5
thestringarray = cat, dog, bird

У меня проблемы с выяснением того, как получить импульс для программной загрузки theintarray и thestringarray в объект контейнера, такой как vector или list. Я обречен просто прочитать это как строку и разобрать это сам?

Спасибо!

1 Ответ

7 голосов
/ 13 февраля 2011

Да, вы обречены разбирать самостоятельно.Но это относительно просто возможно:

template<typename T>
std::vector<T> to_array(const std::string& s)
{
  std::vector<T> result;
  std::stringstream ss(s);
  std::string item;
  while(std::getline(ss, item, ',')) result.push_back(boost::lexical_cast<T>(item));
  return result;
}

, что может быть использовано:

std::vector<std::string> foo = 
    to_array<std::string>(pt.get<std::string>("thestringarray"));

std::vector<int> bar =
    to_array<int>(pt.get<std::string>("theintarray"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...