C++ 使用带有新API的编号索引进行的转换无效

C++ 使用带有新API的编号索引进行的转换无效,c++,yaml-cpp,C++,Yaml Cpp,我面临新语法的问题。 分析以下yaml文件时: S1: data_type: spr guid: 1 S2: data_type: spr guid: 2 使用以下代码: #include "yaml.h" int main () { YAML::Node testNode = YAML::LoadFile("data/Sprites.yaml"); std::cout<<"type "<<testNode["S1"]

我面临新语法的问题。 分析以下yaml文件时:

S1:
    data_type: spr
    guid: 1 
S2:
    data_type: spr
    guid: 2
使用以下代码:

#include "yaml.h"
int main () {
    YAML::Node testNode = YAML::LoadFile("data/Sprites.yaml");

    std::cout<<"type "<<testNode["S1"]["data_type"].as<std::string>()<<std::endl;
    std::cout<<"type "<<testNode[1]["data_type"].as<std::string>()<<std::endl;
    return 0;
}
第一行工作并输出类型spr,而第二行不工作,抛出YAML::TypedBadConversion


它们不应该有相同的输出吗?或者编号索引只对序列有效,而对映射无效?我做错了什么?

在YAML中,地图是没有顺序的,因此请求地图的第一个条目是没有意义的。相反,testNode[1]引用了带有键1的映射条目,而键1并不存在。

这就解释了问题。我想我会在yaml文件的顶部按顺序列出所有名称。