libyaml:检索根元素的键

libyaml: retrieve the key of the root element

给定这个简单的 YAML 示例:

{CR: {ab: 12}}

我想检索 CR。也许我不知道识别“根键”的正确词,因此我没有找到任何有用的东西。 我用QtYaml that is based upon libyaml,在Ubuntu 20.04.

QString yaml = "{CR: {ab: 12}}";
YAML::Node root = YAML::Load(yaml.toStdString().c_str());

QString key;
YAML::convert<QString>().decode(root, key);
qDebug() << key;

它returns 一个空字符串。 我必须做什么才能拥有 key = "CR"?

这不是libyaml; libyaml 没有带名称空间的 C++ 接口。从 API 调用的外观来看,您使用的是 .

YAML 文档有一个根节点,在您的例子中这是一个 映射。映射是一个集合节点,因此无法正确转换为字符串。你想要的是提取该映射的第一个键:

root.begin()->first.as<QString>();

begin() returns 根映射键值对上的迭代器。 -> 取消对其第一项的引用。 first 检索密钥。 as<QString>() 将密钥转换为 QString 和 returns。