c++ YAML::Node判断是否存在key
时间: 2023-08-01 19:12:35 浏览: 749
在 C++ 中,YAML::Node 类型的对象可以使用 YAML::Node::FindValue() 方法来查找指定的键值对,并返回一个 YAML::Node 类型的对象。如果查找成功,则返回该键值对对应的节点对象;如果查找失败,则返回一个空的 YAML::Node 对象。
因此,如果你想判断一个 YAML::Node 对象中是否存在指定的键值对,可以使用 FindValue() 方法来查找该键值对,然后判断返回的节点对象是否为空即可。示例代码如下:
```
#include <yaml-cpp/yaml.h>
#include <iostream>
int main() {
YAML::Node config = YAML::LoadFile("config.yaml");
YAML::Node node = config["key"];
if (!node.FindValue("subkey").IsNull()) {
std::cout << "subkey exists" << std::endl;
} else {
std::cout << "subkey does not exist" << std::endl;
}
return 0;
}
```
在上述代码中,我们首先加载了一个 YAML 配置文件,并获取了其中的一个节点对象。然后,我们调用了 FindValue() 方法来查找该节点对象中是否存在名为 subkey 的键值对,如果存在,则输出 subkey exists,否则输出 subkey does not exist。
需要注意的是,如果你要查找的键值对中包含数组或映射类型的值,你需要使用 YAML::Node::operator[]() 方法来访问子节点。例如:
```
if (!node["subkey"][0]["subsubkey"].IsNull()) {
std::cout << "subsubkey exists" << std::endl;
} else {
std::cout << "subsubkey does not exist" << std::endl;
}
```
在上述代码中,我们通过 operator[]() 方法访问了一个名为 subkey 的键值对,并获取了该键值对中的第一个子节点。然后,我们又通过 operator[]() 方法访问了该子节点中名为 subsubkey 的键值对,并判断其是否存在。
阅读全文