我该如何在C++中以表格形式将数据输出到控制台?有一个关于C#的问题,但我需要C++的解决方案。
以下是C++版本:如何在控制台应用程序中绘制最佳表格(C++)
这里是iomanip拥有的一小部分示例:
#include <iostream>
#include <iomanip>
int main(int argc, char** argv) {
std::cout << std::setw(20) << std::right << "Hi there!" << std::endl;
std::cout << std::setw(20) << std::right << "shorter" << std::endl;
return 0;
}
除此之外,您还可以做其他一些事情,比如设置浮点数的精度,更改在使用setw时用作填充的字符,以某种方式输出不是十进制的数字等等。
我没有找到喜欢的东西,所以我自己做了一个。您可以在https://github.com/haarcuba/text-table上找到它。
以下是其输出的示例:
+------+------+----+
| |Sex | Age|
+------+------+----+
|Moses |male |4556|
+------+------+----+
|Jesus |male |2016|
+------+------+----+
|Debora|female|3001|
+------+------+----+
|Bob |male | 25|
+------+------+----+
您是否可以做类似于C#示例的非常相似的事情:
String.Format("|{0,5}|{1,5}|{2,5}|{3,5}|", arg0, arg1, arg2, arg3);
就像:
printf("|%5s|%5s|%5s|%5s|", arg0, arg1, arg2, arg3);
这里有一个我用来制作此内容的参考:http://www.cplusplus.com/reference/clibrary/cstdio/printf/
检查列值长度,并记住值的长度以进行格式化。
printf(" %-4s| %-10s| %-5s|\n", "ID", "NAME", "AGE");
看看MySQL shell界面是怎么设计的,这会给你一个很好的想法。