C ++和表格式打印

时间:2010-10-05 19:44:13

标签: c++

我正在寻找如何使用C ++进行打印,以便修复表格列宽。 目前我已经使用空格|-,但是一旦数字达到两位数,所有对齐都会变坏。

|---------|------------|-----------|
| NODE    |   ORDER    |   PARENT  |
|---------|------------|-----------|
|  0      |     0      |           |
|---------|------------|-----------|
|  1      |     7      |     7     |
|---------|------------|-----------|
|  2      |     1      |     0     |
|---------|------------|-----------|
|  3      |     5      |     5     |
|---------|------------|-----------|
|  4      |     3      |     6     |
|---------|------------|-----------|
|  5      |     4      |     4     |
|---------|------------|-----------|
|  6      |     2      |     2     |
|---------|------------|-----------|
|  7      |     6      |     4     |
|---------|------------|-----------|

2 个答案:

答案 0 :(得分:12)

您可以将std::setw操纵器用于cout。

还有std::setfill来指定填充符,但默认为空格。

如果要将值居中,则必须进行一些计算。我建议右对齐值,因为它们是数字(并且更容易)。

cout << '|' << setw(10) << value << '|' setw(10) << value2 << '|' << endl;

不要忘记包含<iomanip>

将它包装到一般的表格式化函数中并不会有太大的麻烦,但我会把它作为读者的练习:)

答案 1 :(得分:6)

您可以使用beautiful printf()。我发现它更容易和格式比cout更好。

示例:

int main()
{
    printf ("Right align: %7d:)\n", 5);
    printf ("Left align : %-7d:)\n", 5);

    return 0;
}