使用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     

解决方法

        为您的数据创建包装器类:
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