クラス(いくつかのスカラー値とfloatのベクトルを含む)があり、別のマップの値としてインスタンスを読み書きしたいと思います。
// 書きます out << YAML :: Key << "my_queue" << YAML :: Value << my_queue; //読み取ります(他のコードが切り取られます...) for(YAML :: Iterator it = doc.begin(); it!= doc.end(); ++ it) {{ std :: string key、value; it.first()>>キー; it.second()>>値; if(key.compare( "my_queue")== 0){ * it >> my_queue; } }
このクラスを書くことは完璧に機能しますが、私が何をしてもそれを読むことができないようです。それはInvalidScalarを投げ続けます。
キャッチされたYAML::InvalidScalar yaml-cpp:行20、列13でエラー:無効なスカラー
これは、出力(エラーを報告せずにyaml-cppで記述されたもの)が次のようになることです。
その他の番号:80 my_queue: サイズ:20 データ: -3.5 ---1 --- 1.5 -0.25 ---24.75 --5.75 -2.75 ---33.55 -7.25 ---11 -15 -37.5 --3.75 ---28.25 -18.5 -14.25 ---36.5 --6.75 --- 0.75 --14 max_size:20 平均:-0.0355586 stdev:34.8981 even_more_data:1277150400
ドキュメントには、これがサポートされている使用法、ネストされたマップ、この場合は値の1つとしてシーケンスがあると記載されているようです。それはInvalidScalarであると不平を言いますが、私が最初に行うことは、これがマップであることを示しています。
YAML :: Emitter&operator <<(YAML :: Emitter&out、const MeanStd&w) {{ out << YAML :: BeginMap; out << YAML :: Key << "size"; out << YAML :: Value << w.size(); out << YAML :: Key << "data"; out << YAML :: Value << YAML :: BeginSeq; for(Noor :: Number i = 0; i <w.size(); ++ i){ out << w [i]; } out << YAML :: EndSeq; out << YAML :: Key << "max_size"; out << YAML :: Value << w.get_max_size(); out << YAML :: Key << "mean"; out << YAML :: Value << w.mean(); out << YAML :: Key << "stdev"; out << YAML :: Value << w.stdev(); out << YAML :: EndMap; 戻る; }
誰かがこれに問題があると思いますか?