Если документ yaml содержит смесь последовательностей, карт и скаляров, и эти типы коллекций сами по себе являются многоуровневыми, есть ли встроенная функция или простой способ перечислить все ключи, но не окончательное значение на листе ? Предполагая, что ключи являются строками.
Как перечислить все ключи универсального yaml с помощью yaml-cpp
Ответы (1)
Вам придется рекурсивно работать с узлами в документе, проверяя тип каждого из них:
switch (node.Type()) {
case Null: // ...
case Scalar: // ...
case Sequence:
for (auto it = node.begin(); it != node.end(); ++it) {
auto element = *it;
// recurse on "element"
}
break;
case Map:
for (auto it = node.begin(); it != node.end(); ++it) {
auto key = it->first;
auto value = it->second;
// recurse on "key" and "value"
// if you're sure that "key" is a string, just grab it here
}
break;
case Undefined: // ...
}
person
Jesse Beder
schedule
03.03.2016
Спасибо Джесси! Вы хотите, чтобы скалярный регистр попал в последовательность?
- person Hackless; 03.03.2016
Нет, это просто для краткости.
- person Jesse Beder; 03.03.2016