マップ内のすべてのノードをキーなしで取得したいと考えています。私が宣言されますどのように多くの「タイプ」Sまたはそれらのキーの名前がどうなるか分からないyaml-cpp未定義の値を持つマップを反復するもっとも簡単な方法
characterType :
type1 :
attribute1 : something
attribute2 : something
type2 :
attribute1 : something
attribute2 : something
:
私のYAMLは次のようになります。だからこそ、私は地図を反復しようとしています。
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>());
}
コンパイルするときに、前のコードでは、任意のトラブルを与えるものではありませんが、その後、実行時に私はこのエラーを取得する: はYAML::TypedBadConversion<CharacterType>
のインスタンスを投げた後に呼び出さ終了し、私はまた、代わりにサブインデックスを使用して試してみました同じエラーが発生します。
私は何か間違っていると確信しています、私はそれを見ることができません。
あなたは命の恩人です!ありがとうJesse :) – delephin
少しずつ、しかし私は文字列として全体のマップ(YAML構造体)を取得する方法を持っていいと思います、私はそのような可能性が言及されているAPIドキュメントを見つけることができないようです。 – Smar
また、空の文字列を返す代わりに、値が空の場合、このエラーが発生します... – Smar