以下のようなyamlファイルを作成しました。
Define1: &Define1
0: zero
1: one
Define2:
<<: *Define1
2: two
Online YAML parserで試してみました。結果は以下のようになります。(ノードがどのように構築されるかを取得するだけです。)
{
"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;
}