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

时间:2014-02-16 22:15:37

标签: 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"]["data_type"].as<std::string>()<<std::endl;
    std::cout<<"type "<<testNode[1]["data_type"].as<std::string>()<<std::endl;
    return 0;
}

第一行工作并输出“type spr”,而第二行不工作,抛出YAML :: TypedBadConversion&lt; std :: string&gt;。

他们两个都不应该有相同的输出吗?或者编号索引是否仅适用于序列而不适用于地图?我做错了什么?

1 个答案:

答案 0 :(得分:0)

在YAML中,地图不是有序的,所以要求地图的“第一个条目”是没有意义的。相反,testNode[1]指的是带有键1的地图条目,该密钥不存在。