漂亮用C++打印一个表

Dat*_*Chu 11 c++ pretty-print

我正在寻找一个类似于prettytable但在C++中的库

http://code.google.com/p/prettytable/

我知道如何使用printf或iostream自己生成一个.但是,我想知道是否有一个库.

我只对将这个ASCII表写入控制台感兴趣.

最好是:

std::vector<std::string> headers;
headers.push_back("My Awesome Header 1");
headers.push_back("My Awesome Header 2");
headers.push_back("My Awesome Header 3");


PrettyTablePrinter ptp;
ptp.SetHeaders(headers);
// Set some other options here
ptp.AddRow(data[0]);
ptp.AddRow(data[1]);
ptp.AddRow(data[2]);

ptp.Print(&std::cout);
Run Code Online (Sandbox Code Playgroud)

Dat*_*Chu 17

由于我还没有找到一个好的C++解决方案,我已经为你们写了一个

https://github.com/dattanchu/bprinter/wiki


ice*_*ime 7

据我所知,您在这里有三个主要选择:

我不知道有任何图书馆可以比这更多地帮助您进行“表格设计”。


hka*_*ser 5

虽然不完全是您正在寻找的内容,但Boost.Spirit包含一个库(名为 Karma),可用于相当轻松地生成此类输出。文档在这里


小智 5

我对在网上找到的任何内容都不满意,所以我写了自己的:https : //github.com/friedmud/variadic_table

它使用可变参数模板,以使每一列都可以保留不同的类型。它也只需要C ++ 11。

VariadicTable<std::string, double, int, std::string> vt({"Name", "Weight", "Age", "Brother"});

vt.addRow({"Cody", 180.2, 40, "John"});
vt.addRow({"David", 175.3, 38, "Andrew"});
vt.addRow({"Robert", 140.3, 27, "Fande"});

vt.print();
Run Code Online (Sandbox Code Playgroud)

这将输出:

--------------------------------------
| Name |  Weight  |    Age   |Brother|
--------------------------------------
|Cody  |     180.2|        40|John   |
|David |     175.3|        38|Andrew |
|Robert|     140.3|        27|Fande  |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)

它正在大型软件项目中积极使用-因此将随着时间的推移进行维护和开发。随时提交问题/ PR

  • 克隆后的存储库在我运行 make 时出现了 20 多个错误。 (2认同)