Tabulate - C++表格格式化库介绍与使用
文章目录
- Tabulate - C++表格格式化库介绍与使用
- 主要特性
- 安装方法
- 使用vcpkg安装
- 使用CMake集成
- 直接包含头文件
- 基本使用示例
- 高级功能
- 单元格合并
- 颜色和样式
- 自定义边框样式
- 从Markdown创建表格
- 实际应用示例
- 数据库查询结果显示
- 注意事项
Tabulate - C++表格格式化库介绍与使用
Tabulate 是一个用于在终端中创建美观表格的现代C++库。它允许你以简单直观的方式创建和格式化表格,支持跨平台使用(Windows/Linux/macOS)。
主要特性
- 简单易用的API
- 支持多行单元格内容
- 文本对齐(左、中、右)
- 边框样式自定义
- 单元格合并
- 颜色和文本样式
- 支持UTF-8字符
- 无外部依赖
安装方法
使用vcpkg安装
vcpkg install tabulate
使用CMake集成
find_package(tabulate CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE tabulate::tabulate)
直接包含头文件
Tabulate是header-only的,可以直接下载头文件使用。
基本使用示例
#include <tabulate/table.hpp>
using namespace tabulate;int main() {Table table;// 添加表头table.add_row({"ID", "Name", "Age", "Salary"});// 添加数据行table.add_row({"1", "John Doe", "30", "$85,000"});table.add_row({"2", "Jane Smith", "28", "$92,500"});table.add_row({"3", "Bob Johnson", "35", "$78,300"});// 设置表格格式table.format().font_style({FontStyle::bold}) // 表头加粗.border_top("=").border_bottom("=").border_left("|").border_right("|").corner("+");// 设置列格式table.column(0).format().width(5); // ID列宽度table.column(1).format().width(15); // Name列宽度table.column(2).format().width(8).font_align(FontAlign::center); // Age列居中table.column(3).format().width(10).font_align(FontAlign::right); // Salary列右对齐// 打印表格std::cout << table << std::endl;return 0;
}
高级功能
单元格合并
Table movies;
movies.add_row({"Movie", "Rating", "Year"});
movies.add_row({"The Shawshank Redemption", "9.3", "1994"});
movies.add_row({"The Godfather", "9.2", "1972"});// 合并第一行的前两列
movies[0][0].format().column_span(2);
颜色和样式
Table colorful_table;
colorful_table.add_row({"Red", "Green", "Blue"});// 设置单元格颜色
colorful_table[0][0].format().font_color(Color::red).font_style({FontStyle::bold, FontStyle::underline});colorful_table[0][1].format().font_background_color(Color::green).font_color(Color::white);colorful_table[0][2].format().font_color(Color::blue).font_style({FontStyle::italic});
自定义边框样式
Table custom_border;
custom_border.add_row({"A", "B", "C"});
custom_border.add_row({"1", "2", "3"});custom_border.format().border_top("-").border_bottom("-").border_left("|").border_right("|").corner("+");
从Markdown创建表格
auto table = Table::from_markdown("| Name | Age |\n|------|-----|\n| John | 25 |\n| Jane | 30 |");
实际应用示例
数据库查询结果显示
void display_query_results(const std::vector<Employee>& employees) {Table results;// 添加表头results.add_row({"ID", "Name", "Department", "Hire Date", "Salary"});// 添加数据for (const auto& emp : employees) {results.add_row({std::to_string(emp.id),emp.name,emp.department,emp.hire_date,"$" + std::to_string(emp.salary)});}// 格式化results.format().font_style({FontStyle::bold}).border_top("-").border_bottom("-").border_left("|").border_right("|").corner("+");// 列对齐和宽度results.column(0).format().width(5).font_align(FontAlign::center);results.column(3).format().width(12);results.column(4).format().width(10).font_align(FontAlign::right);std::cout << results << std::endl;
}
注意事项
- Tabulate 主要用于终端显示,不适合生成HTML或其它格式的表格
- 对于非常大的表格,性能可能不是最优的
- 某些复杂格式在窄终端中可能显示不正常
Tabulate 是一个功能强大且易于使用的库,特别适合需要在命令行界面中展示结构化数据的C++应用程序。它的API设计直观,支持丰富的格式化选项,可以创建出专业美观的表格输出。