簡體   English   中英

用 C++ 漂亮地打印一張表格

[英]Pretty print a table in C++

我正在尋找一個類似於 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++解決方案,所以寫了一個給大家

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

我對網上找到的任何一個都不滿意,所以我自己寫了: 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

據我所知,您在這里有三個主要選擇:

我不知道有任何圖書館可以比這更多地幫助您進行“表格設計”。

雖然不完全是您要查找的內容,但Boost.Spirit包含一個庫(名為 Karma),可用於相當容易地生成此類輸出。 文檔在這里

自由堡

太棒了,他們也有幾種很酷的桌子樣式

https://github.com/seleznevae/libfort

在 C++ 中編寫一個 html 來創建表非常簡單,你不需要一個庫。 另一方面,如果您希望在控制台上輸出表格,則可以完成,但並不是那么容易,特別是如果您需要進行垂直對齊、斷字符串等。

您可以使用ncurses庫來實現它。 它的 C 庫。

在我看來,這兩個庫是當今最好的選擇:-

  1. 制表
  2. 庫堡

libfort 相對更簡單、更小,因為它是用 C 編寫的,而 tabulate 是高度可定制的並且是用 C++ 編寫的

格式化所有輸出的最通用方法,事實上,在 C++ 語言中這樣做的唯一方法是使用 I/O 操縱器。
http://www.fredosaurus.com/notes-cpp/io/omanipulators.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM