解析YAML文件?

问题描述

如何使用yaml-cpp解析以下YAML文件

scene:
  - camera:
      film:
        width: 800
        height: 600
        filename: "out.svg"
  - shape:
      name: "muh"

我尝试过:

#include <yaml-cpp/yaml.h>

int main() {
    YAML::Node root_node = YAML::LoadFile("Scenes/StanfordBunny.flatland.yaml");
    
    // throws an exception
    int value = root_node["scene"]["camera"]["film"]["width"].as<int>();
}

如何获取width属性的值? 如何获得shape属性名称

解决方法

摄像机前面的“-”表示它是一组对象。所以我的猜测是:

root_node["scene"][0]["camera"]["film"]["width"].as<int>();