问题描述
|
我需要以固定宽度的科学计数法输出数据,如下例所示。有什么办法可以实现?
数据:
-[+ 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