解析 YAML 文件?

Parsing a YAML file?

如何使用 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>();