Mi piacerebbe ottenere ogni nodo in una mappa senza conoscere i tasti.yaml-cpp Il modo più semplice per scorrere su una mappa con valori indefiniti
mio YAML si presenta così:
characterType :
type1 :
attribute1 : something
attribute2 : something
type2 :
attribute1 : something
attribute2 : something
Non so quanti "tipo" s saranno dichiarati o quello che il nome di quelle chiavi sarà. Ecco perché sto cercando di scorrere la mappa.
struct CharacterType{
std::string attribute1;
std::string attribute2;
};
namespace YAML{
template<>
struct convert<CharacterType>{
static bool decode(const Node& node, CharacterType& cType){
cType.attribute1 = node["attribute1"].as<std::string>();
cType.attribute2 = node["attribute2"].as<std::string>();
return true;
}
};
}
---------------------
std::vector<CharacterType> cTypeList;
for(YAML::const_iterator it=node["characterType"].begin(); it != node["characterType"].end(); ++it){
cTypeList.push_back(it->as<CharacterType>());
}
Il codice precedente non dà alcun problema durante la compilazione, ma poi al momento dell'esecuzione ottengo questo errore: Termina chiamata dopo aver lanciato un'istanza di YAML::TypedBadConversion<CharacterType>
Ho anche provato con un sottoindice invece dell'iteratore, ottenendo lo stesso errore.
Sono sicuro che sto facendo qualcosa di sbagliato, proprio non riesco a vederlo.
Sei un risparmiatore di vita! Grazie Jesse :) – delephin
Un po 'fuori dal comune, ma mi piacerebbe avere un modo per ottenere l'intera mappa (struttura YAML) come una stringa, non riesco a trovare alcun documento API in cui tale possibilità sia menzionata. – Smar
Anche se il valore è vuoto, questo errore verrà generato, invece di restituire una stringa vuota ... – Smar