yaml解析的方法?(yaml cpp)

yaml解析的方法?(yaml cpp),yaml,yaml-cpp,Yaml,Yaml Cpp,我制作了一个yaml文件,如下所示 Define1: &Define1 0: zero 1: one Define2: <<: *Define1 2: two 当然,我期望‘yaml-cpp’会以同样的方式解析,但它在某种程度上有所不同 我猜是这样的。(几乎可以肯定) 见鬼!那么,循环时是否必须检查节点类型 这是一个已知的问题吗?或者“yaml cpp”就是这样解析的 我就是这样做的 // already parsed const YAML::Node&a

我制作了一个yaml文件,如下所示

Define1: &Define1
  0: zero
  1: one

Define2:
  <<: *Define1
  2: two
当然,我期望‘yaml-cpp’会以同样的方式解析,但它在某种程度上有所不同

我猜是这样的。(几乎可以肯定)

见鬼!那么,循环时是否必须检查节点类型

这是一个已知的问题吗?或者“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;
}

yaml cpp尚未实现“merge”键。如果要跟踪该问题直到其实现,请参阅

目前,yaml cpp实际上正在将您的yaml文件解析为:

{
  "Define1": {
    "0": "zero", 
    "1": "one"
  }, 
  "Define2": {
    "<<": {
      "0": "zero", 
      "1": "one"
    },  
    "2": "two"
  }
}
{
“定义1”:{
“0”:“0”,
“1”:“一”
}, 
“定义2”:{

“谢谢你的回答,谢谢你的链接。我想由于问题仍然存在,它似乎仍然不支持合并。也许我必须寻找另一个解决方案。谢谢。”)
// 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;
}
{
  "Define1": {
    "0": "zero", 
    "1": "one"
  }, 
  "Define2": {
    "<<": {
      "0": "zero", 
      "1": "one"
    },  
    "2": "two"
  }
}