将数组打印为均匀间隔的矩形

Printing out an array as an evenly spaced rectangle

好的,我将这段代码作为打印数组项目的一部分:

    #include <iostream>
    #include <string>
    #define ROWS 12
    #define COLS 10

    using namespace std;
    void image_print(unsigned char image[ROWS][COLS]) {
        for (int r = 0; r < ROWS; r++) {
            for (int c = 0; c < COLS; c++) {
               cout << +image[r][c] << " ";
            }
        cout << endl;
        }  
    }

输出如下所示:

0 0 0 0 0 0 0 0 0 0
0 64 10 55 127 235 203 241 163 0
0 207 115 62 37 77 43 186 1 0
0 1 119 234 125 172 90 206 103 0
0 113 193 181 158 69 31 85 212 0
0 161 84 27 145 121 211 192 123 0
0 114 4 29 214 80 231 64 71 0
0 173 251 191 221 241 94 76 81 0
0 126 53 138 141 43 78 32 108 0
0 244 4 11 193 240 99 56 154 0
0 131 141 82 198 212 92 217 148 0
0 0 0 0 0 0 0 0 0 0

但我希望它看起来像这样均匀分布:

0    0   0   0   0   0   0   0   0  0
0   64  10  55 127 235 203 241 163  0
0  207 115  62  37  77  43 186   1  0
0    1 119 234 125 172  90 206 103  0
0  113 193 181 158  69  31  85 212  0
0  161  84  27 145 121 211 192 123  0
0  114   4  29 214  80 231  64  71  0
0  173 251 191 221 241  94  76  81  0
0  126  53 138 141  43  78  32 108  0
0  244   4  11 193 240  99  56 154  0
0  131 141  82 198 212  92 217 148  0
0    0   0   0   0   0   0   0   0  0 

有什么巧妙的方法可以做到这一点吗?

#include <iomanip>

cout << setw(3) << +image[r][c] << " ";

setw 是一个 I/O manipulator,它设置要输出的下一个项目的字段宽度。

SetW 就是您要查找的函数。 它设置要在输出中使用的字段宽度。 这是更新后的代码:

    #include <iostream>
    #include <string>
    #include <iomanip> 
    #define ROWS 12
    #define COLS 10

    using namespace std;
    void image_print(unsigned char image[ROWS][COLS]) {
        for (int r = 0; r < ROWS; r++) {
            for (int c = 0; c < COLS; c++) {
               cout << std::setw(5)<<image[r][c] << " ";//setW added for settingwidth in output
            }
        cout << endl;
        }  
    }