C++入门 模仿mysql控制台输出表格

一、 说明

控制台输出表格,自适应宽度

二、 源码

#include <iostream>
#include <map>
#include <string>
#include <vector>

using namespace std;

void printTable(vector<vector<string>> *pTableData)
{
    int row = pTableData->size();
    int column = (*pTableData)[0].size();

    vector<int> cloumnWidth;
    for (int i=0;i<column;i++)
    {
        cloumnWidth.push_back(0);
    }

    for(int i=0;i<row;i++)
    {
        for (int j = 0; j < column; j++)
        {
            if ((*pTableData)[i][j].size() > cloumnWidth[j])
            {
                cloumnWidth[j] = (*pTableData)[i][j].size();
            }
        }
    }

    //绘制表格
    int tableRow = row * 2 + 1;
    for (int i = 0; i < tableRow; i++)
    {
        if (i % 2 == 0)
        {
            //+--------------+
            for (int j=0;j<column;j++)
            {
                if (j == 0)
                {
                    cout << "+";
                }
                for (int k=0;k< cloumnWidth[j];k++)
                {
                    cout << "-";
                }
                cout << "+";
            }
            cout << endl;
        }
        else
        {
            //数据行
            for (int j = 0; j < column; j++)
            {
                if (j == 0)
                {
                    cout << "|";
                }
                string content = (*pTableData)[i / 2][j];
                //补空
                int emptySize = cloumnWidth[j]- content.size();
                for (int k = 0; k < emptySize; k++)
                {
                    content.append(" ");
                }
                cout << content;
                cout << "|" ;
            }
            cout << endl;
        }
    }
}


int main()
{
    vector<vector<string>> tableData;

    for (int i=0;i<2;i++)
    {
        vector<string> vec;
        vec.push_back("");
        vec.push_back("");
        vec.push_back("");
        tableData.push_back(vec);
    }

    tableData[0][0] = "aaa";
    tableData[0][1] = "1234";
    tableData[0][2] = "qwer";
    tableData[1][0] = "bbbb";
    tableData[1][1] = "123";
    tableData[1][2] = "qwert";

    printTable(&tableData);
}

三、 运行效果

请添加图片描述

相关推荐

  1. C++重新入门-基本输入输出

    2024-07-11 01:26:05       35 阅读
  2. C++入门【31-C++ 基本的输入输出

    2024-07-11 01:26:05       35 阅读
  3. [C/C++入门][输入输出]2、字符三角形

    2024-07-11 01:26:05       7 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 01:26:05       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 01:26:05       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 01:26:05       4 阅读
  4. Python语言-面向对象

    2024-07-11 01:26:05       4 阅读

热门阅读

  1. 二刷算法训练营Day57 | 动态规划(17/17)

    2024-07-11 01:26:05       8 阅读
  2. 自定义业务非受检异常

    2024-07-11 01:26:05       10 阅读
  3. GPT-5 一年半后发布?对此你有何期待?

    2024-07-11 01:26:05       9 阅读
  4. DSC主备归档报错

    2024-07-11 01:26:05       10 阅读
  5. DangerWind-RPC-framework---三、服务端下机

    2024-07-11 01:26:05       8 阅读
  6. spring管理bean源码解析

    2024-07-11 01:26:05       9 阅读
  7. a+=1和a=a+1的区别

    2024-07-11 01:26:05       7 阅读
  8. threadLocal

    2024-07-11 01:26:05       9 阅读
  9. GESP C++ 三级真题(2023年9月)T2 进制判断

    2024-07-11 01:26:05       7 阅读
  10. qt中connect函数的使用方法

    2024-07-11 01:26:05       12 阅读