为什么没有setw(n)在这里工作?

时间:2015-01-25 23:10:07

标签: c++ setw

这是我的问题:

  

给定三个已经声明并初始化的double类型的变量a,b,c,编写一些代码,将它们中的每一个打印在同一行的15位置字段中,远离科学(或e)避免了注释或指数表示法。每个数字应在小数点右侧打印5位数。例如,如果它们的值为24.014268319,14309,0.00937608,则输出为:

     

| xxxxxxx24.01427xxxx14309.00000xxxxxxxx0.00938

     

注意:垂直条,| ,左上方代表打印区域的左边缘;它不打印出来。另外,我们在上面的输出中显示x来表示空格 - 你的输出实际上不应该有x' s

这实际上是我尝试做的事情:

cout << fixed << setprecision(5) << 24.014268319 << setw(5) << 5252.25151516 << endl;

但这会产生以下输出:

24.014275252.25152

显然,我没有正确解释如何正确使用setw(n),有没有人看到我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

setw(...) I / O操纵器有点棘手,因为它的效果正在被重置,即在每次调用<<之后宽度被设置回零(其中包括documentation)。

您需要多次拨打setw(15),如下所示:

cout << fixed << setprecision(5) << setw(15) << 24.014268319  << setw(15) << 5252.25151516 << endl;

Demo.