【问题标题】:Pretty print a table in C++在 C++ 中漂亮地打印一张表
【发布时间】:2011-05-27 04:22:29
【问题描述】:

我正在寻找一个类似于 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);

【问题讨论】:

标签: c++ pretty-print


【解决方案1】:

在我看来,这两个库是当今最好的选择:-

  1. tabulate
  2. libfort

libfort 相对简单且更小,因为它是用 C 编写的,而 tabulate 是高度可定制的并且是用 C++ 编写的

【讨论】:

  • 非常感谢您的回答。我只想要一个简单的库,libfort 提供了我需要的一切,优秀的库。
【解决方案2】:

LibFort

太棒了,他们也有几个很酷的表格样式

https://github.com/seleznevae/libfort

【讨论】:

  • 无法使其与 Visual Studio / Windows 一起使用。是的,我运行了 CMAKE,但是遇到了很多编译错误。
【解决方案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

【讨论】:

  • 当我运行 make 时,一旦克隆的存储库有 20 多个错误。
  • 它也只是标题!
【解决方案4】:

由于没有找到好的C++解决方案,所以写了一个给大家

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

【讨论】:

    【解决方案5】:

    您可以使用ncurses 库来实现它。它的 C 库。

    【讨论】:

      【解决方案6】:

      格式化所有输出的最通用方法,实际上是在 C++ 语言中唯一这样做的方法是使用 I/O 操纵器。
      http://www.fredosaurus.com/notes-cpp/io/omanipulators.html

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          据我所知,这里有三个主要选项:

          我不知道有任何图书馆可以在“表格设计”中为您提供更多帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-12-19
            • 1970-01-01
            • 2013-04-15
            • 2012-05-04
            相关资源
            最近更新 更多