在yaml-cpp中,可以在文档中获取顶级键名

时间:2018-03-16 04:49:39

标签: c++ yaml-cpp

给出以下sample.yaml文件:

Foo:
  id: 10
  name: "bob"

使用yaml-cpp,如何获得密钥名称'Foo'?

鉴于代码:

YAML::Node doc = YAML::LoadFile("sample.yaml");
cout << "doc.Type(): " << doc.Type() << "\n";
cout << "doc.size(): " << doc.size() << "\n";
cout << "doc[Foo][id]: " << doc["Foo"]["id"] << "\n";

Type()按预期为4(Map)(Foo是Map)。

size()按预期为1(Foo是doc中唯一的项目。)

doc [Foo] [id]按预期为10。

但我似乎无法弄清楚如何从文档的一个节点中找到“Foo”。迭代doc会生成一个Node,但会抛出大部分操作的异常。

1 个答案:

答案 0 :(得分:2)

for (const auto& kv : doc) {
  std::cout << kv.first.as<std::string>() << "\n"; // prints Foo
  const YAML::Node& value = kv.second;  // the value
}