C++输出表格(类似Mysql命令行输出)

本文介绍了一个用于绘制表格的C++程序,该程序可以根据输入的数据自动调整表格大小,并展示如何使用这个程序来显示状态转换矩阵。文章详细解释了关键函数Draw_line和Draw_Datas的实现方法。
void Draw_line(vector<int> max,int columns) {  //画行线
	for (int i = 0; i < columns; i++) {
		cout << "+-";
		for (int j = 0; j <= max[i]; j++) {
			cout << '-';
		}
	}
	cout << '+' << endl;
}

columns是表格的列数,max中保存的是每一列的最大长度,这里指的是每一个单元格中的元素所占的所有光标数。

例如 1,2,34 所占的是6而不是5,因为34占了两个光标位。

void Draw_Datas(vector<int> max, vector<vector<string>> Str,vector<string> D,int columns,int row) { //显示构造过程,状态转换矩阵
	Draw_line(max,columns);
	for (int i = 0; i < D.size(); i++) {
		cout << "| " << setw(max[i]) << setiosflags(ios::left) << setfill(' ') << D[i] << ' ';
	}
	cout << '|' << endl;
	Draw_line(max, columns);
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < columns; j++) {
			cout << "| " << setw(max[j]) << setiosflags(ios::left) << setfill(' ');
			cout << Str[i][j] << ' ';
		}
		cout << '|'<<endl;
	}
	Draw_line(max, columns);
}

Str中保存的是你要输入的数据,是vector<vector<string>> 类型的

D中保存的是表格的表头元素,依次为每一列的属性值,例如 “I”“Ia”"Ib"

row表示的是数据的行数,注意不包括表头,即每一列的属性值

int main() {
    Draw_Datas(max,Str,D,columns,row);
    return 0;
}

最后设置好你的数据后,在main函数中运行函数Draw_Datas,就可以得到类似下面的结果:

                                            示例1

                                        示例2

最后友情提示,vector<int> max 中保存的一定要是每一列中所占的最大光标数:

例如:

1234

5.54.6

3

Hello

那么这一列的max[i]=6。

如果是中文,那么需要按占两个光标位算。

最后祝大家运算成功,如果有疑问,请在评论区留言,我看到的话,会给大家解惑的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值