使用yaml-cpp发射时如何格式化数字?

时间:2011-06-24 23:06:53

标签: formatting yaml-cpp

我需要用固定宽度的科学记数法输出我的数据,如下面的示例所示。有没有办法实现它?

数据:
     - [+ 0.000000e + 00,+ 0.100000e + 00,+ 2.400000e + 00,+ 3.600000e + 00,+ 4.800000e + 00]
     - [+ 1.200000e + 00,+ 1.300000e + 00,+ 2.400000e + 00,+ 4.800000e + 00,+ 6.000000e + 00]

-SW

1 个答案:

答案 0 :(得分:1)

为您的数据创建一个包装类:

struct Fixed {
   Fixed(double v = 0): value(v) {}
   double value;

   std::string ToString() const {
      /* write something that outputs this in the format you want */
   }
};

并重载operator <<

YAML::Emitter& operator << (YAML::Emitter& out, const Fixed& f) {
   out << f.ToString();
   return out;
}

然后它会像你期望的那样工作:

std::vector<Fixed> data = /* ... */;
YAML::Emitter out;
out << data;  // etc