如何使用YAML-cpp找到关键值和值?

时间:2016-04-24 17:04:09

标签: yaml-cpp

我有这个:

YAML::Node doc = YAML::LoadFile(ruta);

for (YAML::const_iterator it = doc.begin(); it != doc.end(); ++it) {
       string key= it->first.as<string>();
       string array= it->second.as<string>();
}

我遇到string array= it->second.as<string>();

的问题

当我运行下一个代码时,一切正确,

YAML::Node doc = YAML::LoadFile(ruta);

for (YAML::const_iterator it = doc.begin(); it != doc.end(); ++it) {
      string key= it->first.as<string>();
}

但是当我跑步时:

YAML::Node doc = YAML::LoadFile(ruta)

for (YAML::const_iterator it = doc.begin(); it != doc.end(); ++it) {
      string key= it->first.as<string>();
      string array= it->second.as<string>();
}

在终端中出现此错误:

terminate called after throwing an instance of 'YAML::TypedBadConversion<int>'
  what():  yaml-cpp: error at line 8, column 8: bad conversion
Abortado (`core' generado)

我需要帮助,因为我不知道为什么它不起作用。我认为错误与array = it->second.as<string>();有关,因为如果我使用array = it->second它可以工作,但我需要转换为字符串。

1 个答案:

答案 0 :(得分:0)

yaml-cpp报告您无法将您的键/值对的值转换为std::string。你知道它应该是什么类型的吗?您的变量名为array,表示您认为它是一个序列。如果是这样,你可以写:

YAML::Node array = it->second;
for (YAML::const_iterator it = array.begin(); it != array.end(); ++it) {
  YAML::Node entry = *it;
  // do something with entry
}