You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++终端中并排打印两个表格

实现终端中表格横向并排打印的方法

要解决两个表格纵向排列的问题,核心思路是避免单独打印完整表格,而是按行合并两个表格的内容后逐行输出。具体可以通过拆分“生成表格行”和“打印”的逻辑来实现:

步骤1:重构Table类,分离行生成与打印逻辑

修改Table类,新增get_lines()方法返回表格的所有行字符串(包括分隔线),而不是直接打印。这样可以获取每个表格的行数据,为后续拼接做准备:

class Table:
    def __init__(self, data):
        self.data = data
        # 计算每列的最大宽度,确保表格内部列对齐
        self.col_widths = [max(len(str(item)) for item in col) for col in zip(*data)]
    
    def get_lines(self):
        lines = []
        # 格式化每行内容
        for row in self.data:
            formatted_row = " | ".join(f"{str(item):<{width}}" for item, width in zip(row, self.col_widths))
            lines.append(formatted_row)
        # 添加表头与内容之间的分隔线(假设第一行为表头)
        if lines:
            separator = "-+-".join("-" * w for w in self.col_widths)
            lines.insert(1, separator)
        return lines
    
    # 保留原有display方法,用于单独打印表格
    def display(self):
        print("\n".join(self.get_lines()))

步骤2:编写并排打印函数

创建一个专门的函数,接收多个Table对象,按行拼接它们的内容并打印:

def display_tables_side_by_side(*tables, gap=4):
    # 获取每个表格的行列表
    table_line_lists = [tbl.get_lines() for tbl in tables]
    # 找到行数最多的表格,用于补全行数对齐
    max_row_count = max(len(lines) for lines in table_line_lists)
    
    # 为行数不足的表格补空行,空行长度等于该表格的最大行宽
    for idx in range(len(table_line_lists)):
        lines = table_line_lists[idx]
        if not lines:
            continue
        table_max_width = max(len(line) for line in lines)
        empty_line = " " * table_max_width
        # 补空行直到行数等于max_row_count
        while len(lines) < max_row_count:
            lines.append(empty_line)
    
    # 逐行拼接所有表格的对应行并打印
    for row_parts in zip(*table_line_lists):
        print((" " * gap).join(row_parts))

步骤3:调用示例

在main函数中创建表格对象,调用并排打印函数即可:

if __name__ == "__main__":
    # 示例表格数据
    t1_data = [["Name", "Age"], ["Alice", 25], ["Bob", 30]]
    t2_data = [["Course", "Score"], ["Math", 90], ["English", 85], ["Physics", 95]]
    
    t1 = Table(t1_data)
    t2 = Table(t2_data)
    
    # 横向并排打印两个表格
    display_tables_side_by_side(t1, t2, gap=4)

关键逻辑说明

  • 分离生成与打印:get_lines()方法将表格内容转换为可拼接的行字符串,摆脱了原display方法直接打印整表的限制。
  • 行对齐处理:通过补空行,保证行数不同的表格也能横向对齐。
  • 列宽格式化:提前计算每列的最大宽度,确保表格内部的列对齐,提升可读性。

内容的提问来源于stack exchange,提问作者zogac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:43:12