0

鉴于这个简单的 YAML 示例:

{CR: {ab: 12}}

我想找回CR。也许我不知道识别“根键”的正确单词,因此我没有发现任何有用的东西。我在 Ubuntu 20.04 中使用基于libyaml的QtYaml 。

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

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

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

4

1 回答 1

1

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

YAML 文档有一个根节点,在您的情况下,这是一个映射。映射是一个集合节点,因此不能正确转换为字符串。您想要的是提取该映射的第一个键:

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

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

于 2021-11-07T23:14:45.663 回答