我正在寻找如何在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 |
|---------|------------|-----------|
3条答案
按热度按时间uqzxnwby1#
可以将
std::setw
操纵器用于cout。还有一个
std::setfill
用于指定填充符,但默认为空格。如果你想把值居中,你必须做一些计算。我建议把值右对齐,因为它们是数字(这样更容易)。
不要忘记包括
<iomanip>
。将它 Package 成一个通用的表格式化程序函数不会太麻烦,但我将把它留给读者作为练习:)
cdmah0mi2#
你可以使用beautiful
printf()
。我发现它比cout
更容易和更好的格式化。示例:
rvpgvaaj3#
既然我们已经有了C++
std::cout
和Cprintf()
的答案,那么不妨给予C++20std::format
的答案。OP,你的列宽都是不同的大小。这里我把它们都做成了9。另外,水平线并不能真正增加可读性,但是它们占用了很多空间。我个人会把它们去掉。
用
std::format
这样格式化东西真的很容易。一定要看看the documentation。对了,别忘了: