You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C++从YAML文件中提取指定类别下的子项名称?

如何用C++ yaml-cpp提取YAML映射中的键名到字符串向量

我来帮你搞定这个yaml-cpp的解析问题~你当前的代码问题在于:当遍历Food对应的映射节点时,每个循环变量n是键值对节点(而非单纯的键字符串),直接调用n.as<std::string>()会因为节点类型不匹配而失败。

修正后的代码

只需要在循环中获取键值对的first部分(即食物名称对应的键节点),再转换为字符串即可:

YAML::Node node = YAML::LoadFile(configYamlPath)["Food"];
std::vector<std::string> items;
// 遍历Food下的所有键值对
for (const auto& keyValuePair : node) {
    // 提取键(食物名称)并加入向量
    items.push_back(keyValuePair.first.as<std::string>());
}

原理说明

在yaml-cpp中,映射类型的YAML::Node遍历返回的是std::pair<YAML::Node, YAML::Node>类型的元素:

  • first:对应映射中的键节点(也就是你需要的Apple、BellPepper这些名称)
  • second:对应键关联的值节点(比如Apple下的Type列表)

这样修改后,你的items向量就会正确包含["Apple", "BellPepper", "Sandwich"],完全符合需求。

内容的提问来源于stack exchange,提问作者Noel Bahdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:56:09