使用YAML-CPP,如何识别未知的钥匙?(Using YAML-cpp, how to ident

2019-10-17 08:28发布

用例是通过写YAML配置文件步进。 我需要检查每一个关键,因此分析其价值。 我喜欢使用像随机存取方法的想法doc["key"] >> value ,但是我真正需要做的是提醒在配置文件中无法识别键的用户,在他们的情况下,例如,拼写错误的关键。 我不知道该怎么做,没有通过文件迭代。

我知道我可以做到这一点使用YAML::Iterator ,像这样

for (YAML::Iterator it=doc.begin(); it<doc.end(); ++it) 
{ 
   std::string key;
   it.first() >> key;
   if (key=="parameter") { /* do stuff, possibly iterating over nested keys */ }
   } else if (/* */) {
   } else {
       std::cerr << "Warning: bad parameter" << std::endl;
   }
}

但有一个简单的方法来做到这一点? 我的方法似乎是完全绕开建成YAML-CPP任何错误检查,似乎撤消的随机访问键都简单。

Answer 1:

如果你担心,因为用户拼错它的关键不在那里,你可以使用FindValue

if(const YAML::Node *pNode = doc.FindValue("parameter")) {
   // do something
} else {
   std::cerr << "Parameter missing\n";
}

如果你真正希望得到您的具体名单之外的地图中所有的键,那么你就必须要遍历作为你在干什么。



文章来源: Using YAML-cpp, how to identify unknown keys?
标签: yaml-cpp