给定以下 example.yaml 文件:
Foo:
id: 10
name: "bob"
Run Code Online (Sandbox Code Playgroud)
使用 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";
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,Type() 是 4(Map)(Foo 是一个 Map)。
size() 正如预期的那样为 1(Foo 是文档中唯一的项目)。
doc[Foo][id] 正如预期的那样是 10。
但我似乎无法弄清楚如何从文档的一个节点中找到“Foo”。迭代 doc 会生成一个 Node,但其大多数操作都会引发异常。
for (const auto& kv : doc) {
std::cout << kv.first.as<std::string>() << "\n"; // prints Foo
const YAML::Node& value = kv.second; // the value
}
Run Code Online (Sandbox Code Playgroud)