如何使用yaml-cpp中的额外换行符发出一系列映射

时间:2013-07-09 07:17:52

标签: c++ yaml 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;

在地图的开头,但它给出了错误的结果。如何获得我想要的输出?

1 个答案:

答案 0 :(得分: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;