[英]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/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
據我所知,您在這里有三個主要選擇:
printf
“C 方式”std::setw
和std::setfill
)的“C++方式”printf
樣式格式化程序。我不知道有任何圖書館可以比這更多地幫助您進行“表格設計”。
雖然不完全是您要查找的內容,但Boost.Spirit包含一個庫(名為 Karma),可用於相當容易地生成此類輸出。 文檔在這里。
在 C++ 中編寫一個 html 來創建表非常簡單,你不需要一個庫。 另一方面,如果您希望在控制台上輸出表格,則可以完成,但並不是那么容易,特別是如果您需要進行垂直對齊、斷字符串等。
您可以使用ncurses庫來實現它。 它的 C 庫。
格式化所有輸出的最通用方法,事實上,在 C++ 語言中這樣做的唯一方法是使用 I/O 操縱器。
http://www.fredosaurus.com/notes-cpp/io/omanipulators.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.