我有这个:
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
它可以工作,但我需要转换为字符串。
答案 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
}