如何从yaml文件中获取特定的类别名称?

时间:2018-04-11 19:51:28

标签: c++ parsing yaml yaml-cpp

我正在使用c ++并且有一个yaml文件,如下所示:

Food:
  Apple:
    - Type: grannysmith
  BellPepper:
    - Type: Red
    - Type: Green
  Sandwich:
    - Type: Ham

我需要解析它,以便我得到一个字符串向量,仅列出食物名称:
output: "Apple", "BellPepper","Sandwich"

到目前为止,我的代码看起来像这样:

YAML::Node node = YAML::LoadFile(configYamlPath)["Food"];    
std::vector<std::string> items;    
for (YAML::Node n : node){    
    items.push_back(n.as<std::string>());    
}    

我如何获得这些特定的密钥?

1 个答案:

答案 0 :(得分:2)

此处,node是YAML地图。当您遍历YAML地图时,您将返回std::pair<YAML::Node, YAML::Node>,它们是键值对。所以,你想要:

for (auto n : node) {
    YAML::Node &key = p.first;
    // Do something with the key here
}

(实际上,解除引用迭代器返回的值是一种从YAML::Nodestd::pair<YAML::Node, YAML::Node>继承的类型,这就是你当前代码编译失败的原因。但这是一个实施细节。)