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-cpp.
YAML 文档有一个根节点,在您的例子中这是一个 映射。映射是一个集合节点,因此无法正确转换为字符串。你想要的是提取该映射的第一个键:
root.begin()->first.as<QString>();
begin()
returns 根映射键值对上的迭代器。 ->
取消对其第一项的引用。 first
检索密钥。 as<QString>()
将密钥转换为 QString
和 returns。
给定这个简单的 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-cpp.
YAML 文档有一个根节点,在您的例子中这是一个 映射。映射是一个集合节点,因此无法正确转换为字符串。你想要的是提取该映射的第一个键:
root.begin()->first.as<QString>();
begin()
returns 根映射键值对上的迭代器。 ->
取消对其第一项的引用。 first
检索密钥。 as<QString>()
将密钥转换为 QString
和 returns。