我可以在yaml-cpp中重命名节点吗?

时间:2020-07-09 18:40:57

标签: yaml yaml-cpp

假设我有一个foo: bar之类的YAML条目。是否可以使用yaml-cpp将键foo重命名为buz,而不必复制所有内容?换句话说,我知道我可以做到:

YAML::Node node = YAML::Load("foo:bar");
YAML::Node new_node;
new_node["buz"] = node["foo"];

但是,这似乎很浪费,我想知道是否有内置的功能可以重命名键foo吗?

1 个答案:

答案 0 :(得分:2)

好吧,你可以做类似的事情

YAML::Node node = YAML::Load("foo: bar");
for (auto it = node.begin(); it != node.end(); ++it) {
  if (it->first.as<std::string>() == "foo") {
    it->first = "buz";
    break;
  }
}

据我所知,yaml-cpp将其映射项存储为对列表,因此无论如何,查找都会执行这样的循环。

相关问题