Я сделал файл yaml, как показано ниже.
Define1: &Define1
0: zero
1: one
Define2:
<<: *Define1
2: two
И пробовал в Онлайн YAML-парсер . Результат как ниже. (Просто узнайте, как строятся узлы.)
{
"Define1": {
"0": "zero",
"1": "one"
},
"Define2": {
"0": "zero",
"1": "one",
"2": "two"
}
}
Конечно, я ожидал, что 'yaml-cpp' будет анализироваться так же, но как-то иначе.
Я думаю, это так. (Почти уверен)
{
"Define1": {
"0": "zero",
"1": "one"
},
"Define2": {
"Define1": {
"0": "zero",
"1": "one"
},
"2": "two"
}
}
Какого черта! Тогда нужно ли проверять тип узла во время цикла?
Это известная проблема? или 'yaml-cpp' просто разобрать таким образом?
Этот код, как я сделал.
// already parsed
const YAML::Node& node = &(docYAML)["Define2"];
for (YAML::Iterator it=node->begin(); it!=node->end(); ++it)
{
const YAML::Node& nodeList = it.second();
std::string str;
nodeList[0] >> str;
}