c++输出二维字符矩阵对齐

二维字符矩阵对齐

在C++中,我们可以使用字符数组来表示二维矩阵。然而,在输出字符矩阵时,我们常常需要对齐字符,使得矩阵更加美观。本文将演示如何输出二维字符矩阵并对齐。

1. 输出字符矩阵

首先,我们需要创建一个字符数组表示二维矩阵。下面是一个简单的例子:

const int ROW = 3;

const int COL = 4;

char matrix[ROW][COL] = {

{'a', 'b', 'c', 'd'},

{'e', 'f', 'g', 'h'},

{'i', 'j', 'k', 'l'}

};

以上代码创建了一个3行4列的字符矩阵。接下来,我们可以使用两个嵌套的循环逐行逐列输出矩阵:

for(int i = 0; i < ROW; i++){

for(int j = 0; j < COL; j++){

std::cout << matrix[i][j] << " ";

}

std::cout << std::endl;

}

运行以上代码,我们可以得到以下输出:

a b c d

e f g h

i j k l

可以看到,以上代码输出了整个字符矩阵,但字符并没有对齐。

2. 对齐字符矩阵

要对齐字符矩阵,我们需要知道每个字符的宽度。在C++中,可以使用std::setw(int)函数来设置每个输出字符的宽度。下面是一个例子:

#include <iomanip>

// ...

const int WIDTH = 4; // 每个字符的宽度

for(int i = 0; i < ROW; i++){

for(int j = 0; j < COL; j++){

std::cout << std::setw(WIDTH) << matrix[i][j] << " ";

}

std::cout << std::endl;

}

以上代码使用std::setw(int)函数设置每个字符的宽度为4,输出结果如下:

a b c d

e f g h

i j k l

从输出结果可以看出,字符矩阵经过对齐后,更加美观了。

3. 动态计算字符宽度

以上代码中,每个字符的宽度都是手动设置的。然而,实际应用中,我们需要动态计算每个字符的宽度才能够确保字符对齐。下面是一个使用动态计算每个字符宽度的例子:

// 计算最长字符串的长度

int max_length = 0;

for(int i = 0; i < ROW; i++){

for(int j = 0; j < COL; j++){

int length = std::strlen(&matrix[i][j]);

if(length > max_length)

max_length = length;

}

}

// 动态计算字符宽度

for(int i = 0; i < ROW; i++){

for(int j = 0; j < COL; j++){

int length = std::strlen(&matrix[i][j]);

std::cout << std::setw(max_length) << matrix[i][j] << " ";

}

std::cout << std::endl;

}

以上代码中,我们使用std::strlen(char*)函数计算每个字符串的长度,并将最长字符串的长度设置为每个字符的宽度。由于std::strlen(char*)函数需要一个以null结尾的字符串作为参数,因此需要将matrix[i][j]强制转换为char*类型。输出结果如下:

a b c d

e f g h

i j k l

从输出结果可以看出,字符矩阵经过动态计算宽度后,也能够正确对齐。

总结

本文介绍了如何输出二维字符矩阵并对齐。我们首先创建一个字符数组表示二维矩阵,然后使用std::setw(int)函数设置每个字符的宽度,最后动态计算每个字符的宽度以确保字符对齐。

后端开发标签