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

C++使用yaml-cpp删除YAML文件指定节点失败问题求助

问题诱因
  • 核心错误是remove方法的传参不符合yaml-cpp的接口要求:yaml-cpp中Map类型节点的remove方法,入参需要是待删除的键的字面量值,而非键对应的节点对象。你代码中传入的是config["point"][name],也就是键A对应的子配置节点,Map无法匹配到对应的键,自然不会执行删除操作。
  • 额外写的config.remove(config["point"][name])属于无效操作:你要删除的是point子节点下的条目,根节点config中不存在对应键,这行代码不会产生任何效果。
修复方案

直接将两行删除逻辑替换为下面的代码即可:

// 直接传入待删除的键名,而非键对应的节点
config["point"].remove(name);

如果要增加健壮性,可以提前做类型和存在性校验:

YAML::Node point_node = config["point"];
if (point_node.IsMap() && point_node[name]) {
    point_node.remove(name);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:06