Как создать последовательность сопоставлений с дополнительными символами новой строки в yaml-cpp

Я хочу создать последовательность сопоставлений с помощью библиотеки yaml-cpp в следующем формате:

-
  name: <some_name>
  value: <some_value>

Я использую этот код:

Emitter out;
out << YAML::BeginSeq;

for (unsigned int i = 0; i < prof_info_.numOfSettings; ++i)
{
   str = NvUS_to_string(stgs[i].settingName);

   if (str != "")
   {
      out << YAML::BeginMap;

      out << YAML::Key << "name";
      out << YAML::Value << str;

      string d_str = get_value_name_from_value_id(stgs[i].settingId, (unsigned int)stgs[i].u32CurrentValue);

      out << YAML::Key << "value";
      out << YAML::Value << d_str;

      out << YAML::EndMap;
  }
}

out << YAML::EndSeq;

f_out << out.c_str();

и я получаю:

- name: <some_name>
  value: <some_value>

я пытался добавить

out << YAML::NewLine;

в начале карты, но дает неверный результат. Как я могу получить желаемый результат?


person toodef    schedule 09.07.2013    source источник
comment
Требуемый формат не является допустимым yaml.   -  person David Brown    schedule 09.07.2013
comment
Зачем?? http://www.yaml.org/spec/1.2/spec.html#id2759963   -  person toodef    schedule 09.07.2013
comment
Отступ имеет значение в yaml. Вы хотели, чтобы это выглядело как пример 2.4 в вашей ссылке?   -  person David Brown    schedule 09.07.2013
comment
Ой ну спасибо! Я чиню это. Да, как в 2.4.   -  person toodef    schedule 09.07.2013


Ответы (1)


Поместите YAML::Newline сразу после YAML::BeginMap, чтобы получить новую строку после -, но перед первой записью карты:

out << YAML::BeginMap;
out << YAML::Newline;

out << YAML::Key << "name";
out << YAML::Value << str;

out << YAML::Key << "value";
out << YAML::Value << d_str;

out << YAML::EndMap;
person Jesse Beder    schedule 09.07.2013