いいえすることはできません、ではないあなたが記述の方法でを生成します。あなたはPythonがインストールされている場合は、簡単にvirtualenvのとdo¹をインストールすることで、オンラインYAMLパーサにあなたの必要な出力を貼り付けて(例えばthis 1)であることをテストしたりすることができます
を
pip install ruamel.yaml.cmd
yaml round-trip input.yaml
あなたの要求出力があり、上部に(キーradius
と値20
を持つ)マッピングであることから値が始まるキーworld
とのマッピングは、フロースタイルシーケンス[-30, -70]
に切り替わります。これは間違っています。シーケンスにキーと値のペアをマッピングすることはできません。
これを修正する方法はいくつかあります。あなたは行うことができます。完全に罰金YAMLである
world:
radius: 20
[-30, -70]:
、ペア-30, -70
が明示的にする必要はありません値null
ための鍵であること。いくつかのYAMLパーサは、このフォームをサポートしていないことに注意してください。
ザ・、IMO、最も論理的な1行のソリューション:
#include <iostream>
#include "yaml-cpp/yaml.h"
int main()
{
YAML::Emitter out;
out << YAML::BeginMap;
out << YAML::Key << "world";
out << YAML::Value << YAML::BeginMap;
out << YAML::Key << "radius";
out << YAML::Value << 20;
out << YAML::Key << YAML::Flow << YAML::BeginSeq << "x" << "y" << YAML::EndSeq;
out << YAML::Key << YAML::Flow << YAML::BeginSeq << "-30" << "-70" << YAML::EndSeq;
std::cout << out.c_str() << "\n";
return 0;
}
あなたの最初のYAMLの例が同様に無効YAMLです:あなたがすべきコンパイルと実行することによって取得することができます
world:
radius: 20
[x, y]: [-30, -70]
マッピングのキーはなくコロンを整列:
world:
radius: 20
x: -70
y: -30
¹免責事項:私はruamel.yaml.cmd
パッケージの著者です。 YAMLファイルに機密データが含まれている場合、ローカルテストを使用することは重要です。
A)YAMLライブラリを使用してください。 B)ライブラリのドキュメントに従ってYAMLに値を追加します。 – tadman