如何确定yaml-cpp中节点的内置标签?
Posted
技术标签:
【中文标题】如何确定yaml-cpp中节点的内置标签?【英文标题】:How to determine the built in tag of a node in yaml-cpp? 【发布时间】:2013-03-27 13:19:35 【问题描述】:在 yaml-cpp 中,当在 YAML 源中使用应用程序定义的标签时,函数 YAML::Node::Tag()
似乎只返回 "?"
以外的任何内容。当然它应该返回(例如)"!!map"
、"!!int"
或其他内置标签。这是期望的行为吗,我如何确定,例如,标量节点的特定类型标签,例如null、布尔值、整数、浮点数、字符串等?我能看到的唯一方法是对每种类型尝试YAML::Node::as<T>()
,直到不引发异常为止。
【问题讨论】:
【参考方案1】:要获取节点的类型,请调用YAML::Node::Type()
。返回值为以下之一:
YAML::NodeType::Undefined
YAML::NodeType::Null
YAML::NodeType::Scalar
YAML::NodeType::Sequence
YAML::NodeType::Map
yaml-cpp 不做更具体的自动标签检测,例如,它不会验证 !!int
与 !!float
。
【讨论】:
以上是关于如何确定yaml-cpp中节点的内置标签?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 yaml-cpp 中指定 Null 节点的输出格式?