反復せずにYAML-cppを使用してマップ内のキーを取得する簡単な方法はありますか?指示first()
から、YAML-cppイテレータクラスのメソッドを使用できることがわかりますが、実際に反復する必要はありません。インデントレベルで識別できるキーがありますが、キーが既知のリストの1つでない場合は、例外をスローする必要があります。私のコードは現在次のようになっています:
std::string key;
if (doc.FindValue("goodKey")
{
// do stuff
key = "goodKey";
} else if (doc.FindValue("alsoGoodKey") {
// do stuff
key = "alsoGoodKey";
} else throw (std::runtime_error("unrecognized key");
// made it this far, now let's continue parsing
doc[key]["otherThing"] >> otherThingVar;
// etc.
otherThingはYAMLファイルのgoodKeyの下にあるため、解析を続行するにはキー文字列が必要です。これは問題なく機能しますが、認識されないキーが何であるかをユーザーに伝えたいと思います。でも、どうやってアクセスしたらいいのかわかりません。その値を与える関数がヘッダーファイルに表示されません。どうすれば入手できますか?