我有一个看起来像这样的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 ]
...
我正在按照this教程在我的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”,依此类推。通过遵循这种逻辑,我无法弄清楚如何读取其余部分。特别是,对于地图的每个条目,我都有兴趣读取对象的位置。
如果有人可以帮助我解决这个问题,我将感到非常高兴。
谢谢。
答案 0 :(得分:1)
我想我低估了图书馆的力量。事实证明,这样做可以解决问题:
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>();
}
...
}