如何确定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 中操作节点

如何在 yaml-cpp 中合并节点

yaml-cpp:创建一个未定义的节点

如何在 yaml-cpp 中指定 Null 节点的输出格式?

可以在不使用发射器和节点事件的情况下遍历 yaml-cpp 树吗?

如何使用 yaml-cpp 删除 YAML 文档的节点