Учитывая этот код:
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 «Данные», представляют собой целое число, число с плавающей запятой или строку? Примечание. Я не хочу проверять, является ли узел скаляром, картой, последовательностью и т. Д.
Вы можете попытаться преобразовать узел в каждый тип:
try {
int value = data.as<int>();
// do something
} catch (const BadConversion& e) {
// do something else
}
Других решений пока нет …