给定此代码:
void LoadFromYaml(const YAML::Node& node){
const YAML::Node& Data=node["Data"];
if(Data){
if(Data.ValueIsInt)// Do something with integer.
if(Data.ValueIsFloat)// Do something with float.
if(Data.ValueIsString)// Do something with string.
}
}
字符串
如何检查YAML节点“Data”中包含的数据是整数、浮点数还是字符串?注意:我不想检查节点是否是标量、Map、序列等。
2条答案
按热度按时间wydwbb8l1#
解析时抛出大量异常会影响解析速度。不知道为什么
yaml-cpp
没有is_type<T>
方法或类似于std::optional
或std::expected
getter的方法使用Boost的一个很好的解决方法-将您自己的模板专门化注入到
YAML
命名空间并返回std::optional
(如果您没有C++17,则返回boost::optional
)// yaml-cpp/patch.hpp
字符串
然后可以运行类似于
型
这里的总构建成本是4个可选值+ 4个默认值。这可能比处理异常快,也可能不快,我还没有测试过。
vq8itlhq2#
您可以尝试将节点转换为每种类型:
字符串