我制作了一个yaml文件,如下所示。
Define1: &Define1
0: zero
1: one
Define2:
<<: *Define1
2: two并在Online YAML parser中尝试。结果如下所示。(只需了解节点是如何构造的。)
{
"Define1": {
"0": "zero",
"1": "one"
},
"Define2": {
"0": "zero",
"1": "one",
"2": "two"
}
}当然,我期望'yaml-cpp‘会以相同的方式解析,但它在某种程度上不同。
我猜是这样的。(几乎可以肯定)
{
"Define1": {
"0": "zero",
"1": "one"
},
"Define2": {
"Define1": {
"0": "zero",
"1": "one"
},
"2": "two"
}
}搞什么鬼!那么我需要在循环时检查节点类型吗?
这是一个已知的问题吗?或者“yaml-cpp”就是这样解析的?
这段代码就是我所做的。
// already parsed
const YAML::Node& node = &(docYAML)["Define2"];
for (YAML::Iterator it=node->begin(); it!=node->end(); ++it)
{
const YAML::Node& nodeList = it.second();
std::string str;
nodeList[0] >> str;
}发布于 2011-02-24 02:04:28
yaml-cpp还没有实现"merge“键。如果你想跟踪这个问题直到它被实现,请参阅http://code.google.com/p/yaml-cpp/issues/detail?id=41。
目前,yaml-cpp实际上将您的YAML文件解析为:
{
"Define1": {
"0": "zero",
"1": "one"
},
"Define2": {
"<<": {
"0": "zero",
"1": "one"
},
"2": "two"
}
}https://stackoverflow.com/questions/5090151
复制相似问题