C++和表格式打印

Avi*_*ash 5 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     |
|---------|------------|-----------|
Run Code Online (Sandbox Code Playgroud)

Jos*_*shD 12

您可以使用std::setw操纵器进行cout.

还有一个std::setfill指定填充符,但它默认为空格.

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

cout << '|' << setw(10) << value << '|' setw(10) << value2 << '|' << endl;
Run Code Online (Sandbox Code Playgroud)

别忘了包括<iomanip>.

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


Don*_*alo 6

你可以使用美丽的printf().我发现它比格式更容易和更好cout.

例子:

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)