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

news2024/9/21 19:06:05

一、 说明

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

二、 源码

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

三、 运行效果

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1916201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端八股文 箭头函数和普通函数的区别

箭头函数是匿名函数&#xff0c;不能作为构造函数&#xff0c;不能使用new箭头函数不绑定 arguments &#xff0c;取而代之用 rest 参数...解决箭头函数不绑定 this &#xff0c;会捕获其所在的上下文的this值&#xff0c;作为自己的this值箭头函数通过 call() 或 apply() 方法…

【学术会议征稿】第四届新材料与化学工程国际学术会议(AMCE 2024)

第四届新材料与化学工程国际学术会议&#xff08;AMCE 2024&#xff09; 2024 4th International Conference on Advanced Materials and Chemical Engineering 为了促进我国新材料与化学工程领域绿色、规范、持续、健康发展,提升科技创新能力&#xff0c;推进学科交叉融合和…

苹果笔记本电脑能玩哪些游戏 苹果电脑可以玩的单机游戏推荐

苹果笔记本有着优美的外观和强大的性能。用户不仅可以使用苹果笔记本办公、剪辑&#xff0c;越来越多的用户开始关注苹果笔记本在游戏领域的表现&#xff0c;尤其是在大型游戏方面。本文将为你详细介绍苹果笔记本都能玩什么游戏&#xff0c;以及为你推荐苹果电脑可以玩的单机游…

浙江宁波G761-3005B穆格伺服阀 有货

G761-3005B穆格伺服阀是一种用于流体控制的阀门。 宁波秉圣与各国的多家进口产品维护服务提供商建立了紧密的合作关系。我们售出的产品提供1年的质保&#xff0c;并且都经过了严格的测试和认证。公司的优势品牌如下&#xff1a;德国MOOG、美国 PARKER&#xff08;派克&#xf…

Sqli-labs合集之环境搭建

Sqli-labs的搭建 搭建第一个SQL注入学习靶场环境&#xff1a; 软件&#xff1a;sqli-labs 安装过程&#xff1a; 1.源码地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.&#xff1b; 2.将压缩包解压到phpst…

特征值究竟体现了矩阵的什么特征?

特征值究竟体现了矩阵的什么特征&#xff1f; 简单来说就是x经过矩阵A映射后和自己平行 希尔伯特第一次提出eigenvalue,这里的eigen就是自己的。所以eigenvalue也称作本征值 特征值和特征向量刻画了矩阵变换空间的特征 对平面上的任意向量可以如法炮制&#xff0c;把他在特征…

【UE5】调用ASR接口,录制系统输出。录制音频采样率不匹配

暂时测出window能用。阿里的ASR接口当前仅支持8000和16000。UE默认采样44100。

CSS技巧专栏:一日一例 1.纯CSS实现 会讨好的热情按钮 特效

题外话: 从今天开始,我准备开设一个新的专栏,专门写 使用CSS实现各种酷炫按钮的方法,本专栏目前准备写40篇左右,大概会完成如下按钮效果: 今天,我来介绍第一个按钮的实现方法:会讨好的热情按钮。为什么我给它起这样的名字呢?你看它像不像一个不停摇尾巴的小黄?当你鼠…

苹果手机短信功能停用怎么恢复?一分钟快速解决!

在使用苹果手机的过程中&#xff0c;可能会遇到短信功能突然停用的情况&#xff0c;这可能导致你无法发送或接收短信&#xff0c;影响日常通讯。这个问题可能由多种原因引起&#xff0c;如网络设置、软件冲突或运营商问题。 短信功能停用怎么恢复&#xff1f;不必担心&#xf…

4-1 文本预处理:分词、停用词、特殊字符消失术

4-1 文本预处理&#xff1a;分词、停用词、特殊字符消失术 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本预处理是不可或缺的一步。有效的文本预处理能够显著提高模型的性能和准确性。本文将详细介绍文本预处理中的三个重要步骤&#xff1a;分词、停用词处理…

MYSQL 四、mysql进阶 8(索引优化与查询优化)

都有哪些维度可以进行数据库调优&#xff1f;简言之&#xff1a; 索引失效、没有充分利用到索引——建立索引关联查询太多JOIN&#xff08;设计缺陷或不得已的需求&#xff09;——SQL优化服务器调优及各个参数设置&#xff08;缓冲、线程数等&#xff09;——调整my.cnf数据过…

Spring中的工厂模式详解及应用示例

1. Spring中的BeanFactory BeanFactory是一个接口&#xff0c;表示它是一个工厂&#xff0c;负责生产和管理bean。在Spring中&#xff0c;BeanFactory是IOC容器的核心接口&#xff0c;定义了管理Bean的通用方法&#xff0c;如 getBean 和 containsBean。 BeanFactory与IOC容器…

3D云渲染工具对决:Maya与Blender的性能和功能深度比较

3D建模和动画制作已成为数字领域不可或缺的一环&#xff0c;无论是在影视特效的震撼场面&#xff0c;还是在游戏角色的生动表现&#xff0c;3D技术都扮演着至关重要的角色。而在这一领域&#xff0c;Maya和Blender这两款软件&#xff0c;以其强大的功能和广泛的应用&#xff0c…

【想要了解Anaconda介绍、安装配置及使用,看这篇文章就够了】

一、Anaconda介绍及安装配置 1、Anaconda简介 Anaconda是一个用于科学计算的 Python 发行版&#xff0c;支持 Linux, Mac, Windows, 包含conda、Python等190多个科学包及其依赖项。它便于获取和管理包&#xff0c;包括python和许多常用软件库&#xff08;如numpy、pandas等&a…

ITIL4认证考试注意事项(附考试答题攻略)

作为一位持有ITIL4中级认证的IT服务管理专家&#xff0c;我深知备考ITIL4认证考试的重要性。在此分享我的复习备考经验&#xff0c;帮助你顺利通过考试。 1. 制定复习计划 制定详细的复习计划是备考的第一步。合理安排每天的复习时间&#xff0c;重点复习ITIL4的关键概念、四个…

【高中数学/对数函数】比较a=ln2/2,b=ln5/5的大小

【问题】 比较aln2/2,bln5/5的大小 【解答】 a-bln2/2-ln5/5(5*ln2-2*ln5)/10(ln2^5-ln5^2)/10(ln32-ln25)/10>0 所以a>b 【图像】 如果绘出函数ylnx/x的图像&#xff0c;再标记出a,b的位置&#xff0c;则绘出图像如下&#xff1a; 由上图可以看出&#xff0c;a,b两…

一道笔试题 - 反转列表

文章目录 描述预期结果代码 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 如当输入链表{1,2,3}时&#xff0c; 经反转后&#xff0c;原链表变…

友思特方案 | 低延迟GigE Vision解决方案:用于红外设备、医疗和工业级探测面板

导读 维持实时视频系统软硬件的长期成本效益&#xff0c;是该系统在医疗、工业等领域广泛应用的前提。友思特低延迟GigE Vision解决方案创新性地突破了这一难题&#xff0c;提供高带宽且高可靠性的端到端网络链接&#xff0c;有效降低了开发成本、复杂性和时间。 引言 虽然实…

和鲸科技荣耀入选2024 H1 「中国最具价值 AGI 创新机构 TOP 50」

以下文章来源于Founder Park&#xff0c;作者Founder Par 大模型的盛宴&#xff0c;不应该只属于那些无数光环加身的算法天才们。 模型的冰山一角下&#xff0c;是应用层的暗流涌动&#xff0c;这是一个更庞大&#xff0c;也更隐秘的蓝海。但发掘这一切的前提是&#xff0c;所…

2024年PMP考试备考经验分享

PMP是项目管理领域最重要的认证之一,本身是IT行业比较流行的证书&#xff0c;近几年在临床试验领域也渐渐流行起来&#xff0c;是我周围临床项PM几乎人手一个的证书。 考试时间&#xff1a;PMP认证考试形式为180道选择题&#xff0c;考试时间为3小时50分。 考试计划&#xff…