C++ 使用带有新API的编号索引进行的转换无效
我面临新语法的问题。 分析以下yaml文件时: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"]
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文件的顶部按顺序列出所有名称。