限制浮点ostream打印到一定长度?

时间:2012-02-21 15:48:19

标签: c++ iostream

这是一个related topic

我正在寻找稍微不同的东西,我正在打印出一个4x4浮点矩阵。事实上,我正在使用this prettyprint method来执行此操作,这将阻止我使用我更熟悉的printf格式。

我可以将ios_base::width()设置为设置最小宽度以填充零和1,但0.6666667之类的东西会将对齐方式搞定。我想我可以设置precision,但它只会影响有效数字的数量,而不会影响值产生的字符总数。我似乎无法在unsetf上使用ostream来设置'默认表示法'...即使我能做到这一点,我怀疑减号会使对齐变得混乱。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

我的临时解决方案是width(7)precision(4)。它给出了小数点后的4位数,3表示放置减号,单个数字和小数点的空格。我必须检查并修改宽度,以便容纳(某些)大于99.9999或小于-9.9999的值以保持对齐。这样做的好处是567890123不会打印为5678901,它所做的就是抛弃对齐(很多,它将打印为567890123.0000)。