Как разобрать файл с yaml-cpp - PullRequest
0 голосов
/ 30 января 2019

У меня есть файл yaml, который выглядит следующим образом:

construction_cone_1:
  model: construction_cone
  model_type: sdf
  position: [ 1.2, 3.4, 0.0 ]
  orientation: [ 0.0, 0.0, 0 ]

construction_cone_2:
  model: construction_cone
  model_type: sdf
  position: [ 3.0, 7.0, 0.0 ]
  orientation: [ 0.0, 0.0, 0 ]

...

Я следую этому руководству, чтобы разобрать его в моем приложении c ++.

Что яДо сих пор понятно, что, поскольку он структурирован, файл загружается как карта в YAML::Node.Итак, я думаю, хороший способ прочитать это:

YAML::Node map = YAML::LoadFile(file_path);
  for(YAML::const_iterator it=map.begin(); it!=map.end(); ++it){
    const std::string &key=it->first.as<std::string>();

Это дает мне "construction_cone_1" для первой записи и так далее.Следуя этой логике, я не могу понять, как читать остаток.В частности, для каждой записи карты мне интересно читать положение объекта.

Я был бы очень рад, если бы кто-нибудь мог помочь мне с этой проблемой.

Спасибо.

1 Ответ

0 голосов
/ 30 января 2019

Полагаю, я недооценил силу библиотеки.Оказывается, это решает проблему:

  YAML::Node map = YAML::LoadFile(filename);
  for(YAML::const_iterator it=map.begin(); it!=map.end(); ++it){
    const std::string &key=it->first.as<std::string>();

    Eigen::Vector2f pos;
    YAML::Node attributes = it->second;
    YAML::Node position = attributes["position"];
    for(int i=0; i<2; ++i){
      pos(i) = position[i].as<float>();
    }

    ...
  }
...