我正在寻找一个类似于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);
答案 0 :(得分:15)
由于我没有找到一个好的C ++解决方案,我已经为你们写了一个
答案 1 :(得分:4)
虽然不完全符合您的要求,但Boost.Spirit包含一个可用于生成此类输出的库(名为Karma)。文档为here。
答案 2 :(得分:3)
据我所知,您有三个主要选择:
printf
的“C路”std::setw
和std::setfill
)printf
样式格式化程序与流一起使用。我不知道有任何图书馆可以帮助你完成“桌面设计”。
答案 3 :(得分:3)
我对在网上发现的任何内容都不满意,所以我写了自己的: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();
这将输出:
--------------------------------------
| Name | Weight | Age |Brother|
--------------------------------------
|Cody | 180.2| 40|John |
|David | 175.3| 38|Andrew |
|Robert| 140.3| 27|Fande |
--------------------------------------
这在大型软件项目中被广泛使用 - 因此它将随着时间的推移而得到维护和开发。随意提交问题/ PRs
答案 4 :(得分:3)
LibFort
它是很棒的,它们也有几种酷表样式。
答案 5 :(得分:1)
编写一个用于在C ++中创建表的html非常简单,你不需要一个库。 另一方面,如果你想在控制台上输出表格,可以这样做,但这并不容易,特别是如果你需要做垂直对齐,打破字符串等等。
答案 6 :(得分:0)
您可以使用ncurses库来实现它。它的C库。
答案 7 :(得分:-1)
格式化所有输出的最通用方法,实际上在C ++语言中只使用 方式是使用I / O操纵器。
http://www.fredosaurus.com/notes-cpp/io/omanipulators.html