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

标签 c++ parsing yaml yaml-cpp

我正在使用 C++ 并且有一个 yaml看起来像这样的文件:

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

我需要对其进行解析,以便获得一个仅列出食物名称的字符串 vector :
输出:“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>());    
}    

我将如何获得那些特定的 key ?

最佳答案

在这里,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> 的类型,这就是为什么您当前的代码不会编译失败。但这是一个实现细节。)

关于c++ - 如何从 yaml 文件中获取特定的类别名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49783422/

相关文章:

ios - 如何在 swift 中解析整个 rss feed xml 数据

go - 有没有办法确保解析 yaml 字符串中的所有数据?

yaml - Github 操作矩阵包括基于 GitHub 事件有条件的条目

Python YAML 转储指针引用

c++ - 在 OMNeT++ 中定期添加主机

c++ - float 乘以零是否保证产生零?

c++ - 使用 c++17 算法并行化一个简单的循环

c++ - 按值(value)返回总是常量吗?

java - 如何在流式 json 中使用 jackson 的上下文?

Java解析网站