Могу ли я переименовать узел в yaml- cpp? - PullRequest
0 голосов
/ 09 июля 2020

Предположим, у меня есть запись YAML, например foo: bar. Могу ли я использовать yaml- cpp, чтобы переименовать ключ foo в buz без необходимости копировать все содержимое? Другими словами, я знаю, что могу это сделать:

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

Однако это кажется расточительным, и мне интересно, есть ли встроенная возможность просто переименовать ключ foo?

1 Ответ

2 голосов
/ 09 июля 2020

Ну, вы можете сделать что-то вроде

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 хранит свои элементы сопоставления в виде списка пар, поэтому поиск все равно будет выполнять al oop таким образом.

...