【问题标题】:libyaml: retrieve the key of the root elementlibyaml:检索根元素的键
【发布时间】:2021-12-20 17:35:26
【问题描述】:

鉴于这个简单的 YAML 示例:

{CR: {ab: 12}}

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

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"

【问题讨论】:

    标签: qt yaml qt6 libyaml


    【解决方案1】:

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

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

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

    begin() 在根映射键值对上返回一个迭代器。 -&gt; 取消对其第一项的引用。 first 检索密钥。 as&lt;QString&gt;() 将密钥转换为 QString 并返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2016-10-03
      • 2022-11-18
      相关资源
      最近更新 更多