Тот кто вам задал это задание явно не знаком с особенностями отображения первых 32 символов, из-за которых получить стройные ряды у вас не получиться. Поэтому предлагаю отобразить только коды.
#include <array>
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
array<array<int, 8>, 16> matrix{};
auto x = 0;
for (auto n = 0; n < 8; ++n) {
for (auto m = 0; m < 16; ++m) {
matrix[m][n] = x++;
}
}
for (const auto& row : matrix) {
for (auto ch : row) cout << setw(8) << ch;
cout.put('\n');
}
}
А чтобы отобразить символы, достаточно при выводе переменную ch явно привести к типу char, вот так
for (auto ch : row) cout << setw(8) << char(ch);
и понять всю безнадёжность вашего дела.