当前位置: 首页 > ds >正文

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;
}

注意事项

  1. Tabulate 主要用于终端显示,不适合生成HTML或其它格式的表格
  2. 对于非常大的表格,性能可能不是最优的
  3. 某些复杂格式在窄终端中可能显示不正常

Tabulate 是一个功能强大且易于使用的库,特别适合需要在命令行界面中展示结构化数据的C++应用程序。它的API设计直观,支持丰富的格式化选项,可以创建出专业美观的表格输出。

http://www.xdnf.cn/news/14252.html

相关文章:

  • MongoDB详细安装步骤(Windows 系统)
  • SHELL 编程正则表达式
  • js 查看字符串字节数
  • 快速幂算法详解:从暴力到优雅的数学优化
  • Python脚本开发入门:从基础到进阶技巧
  • SpringBoot ​@ControllerAdvice 处理异常
  • 鸿蒙app 开发中 如何 看 app 页面的ui结构
  • JS 数组转Object和Map
  • PHP基础-运算符
  • 【62 Pandas+Pyecharts | 智联招聘大数据岗位数据分析可视化】
  • 如何VMware虚拟机扩容磁盘,有很详细图文
  • Blazor Web Assembly - 使用Power Automate Desktop来跟踪一下Blazor页面的内存使用情况
  • 动态规划:求最长回文子串
  • OpenMMlab导出MaskFormer/Mask2Former实例分割模型并用onnxruntime和tensorrt推理
  • DB2连接池监控与挂起连接释放指南
  • Win32OpenSSL工具下载地址
  • Electron截取响应体
  • @Validation 的自定义校验实现, Spring Boot 和 java
  • 实现网页中嵌入B站视频播放器:解决high_quality=1 失效的问题
  • struct stat结构体
  • NY230NY233美光固态闪存NY237NY246
  • 【Transformer拆解】-2. 位置编码(Positional Encoding)
  • 一个密码实现库crypto-work
  • Pandas数据工程深度解析
  • 四数之和-力扣
  • XSS (Reflected)-反射型XSS
  • 晶振常见封装工艺及其特点
  • 深入讲解 Ollama 的源码
  • 【Java多线程从青铜到王者】定时器的原理和实现(十一)
  • Spring依赖注入源码学习:基于XML配置的DI源码解析