cout对齐的另一种方式

时间:2016-07-18 16:48:53

标签: c++

我一直试图弄清楚如何在我的编译器中使用cout来对齐输出。我提到了几个问题,如this,但它没有帮助我。

以上链接使用<<right or <<left

提供帮助

然而,在使用2中的任何一个后,它并没有真正对齐我的输出,如下面的图像链接所示

enter image description here

正如您所看到的,d13的价格只有3位数,而其他4位则导致我的错位

因此,这就是我为了调整价格而做的事情

cout << "D13"
     << setw(7)
     << setfill(' ')
     << " "
     << d13p
     << right
     << setw(3)
     << setfill(' ')
     << " "

不幸的是,它不起作用。是否有任何替代的cout对齐方式?

2 个答案:

答案 0 :(得分:2)

不要将setw操纵器用于空格,将其设置为

这样的东西
std::cout << "D13" << std::right << std::setw(11) << d13p << ...;

“列”之间的间距将是自动的。

Simple demo with output in neat columns

答案 1 :(得分:2)

不需要替代,只需正确使用setw()即可。最简单的维护方法是将其用于所有字段:

cout << setfill(' ') // use once
     // Field 'Durian'
     << setw(8)
     << left
     << "D13"

     << ' ' // Column spacing
     // Field 'Price'
     << setw(5)
     << right
     << d13p

     << ' ' // Column spacing
     // Field 'Qty'
     << setw(3)
     << right
     << d13qty

     ...