尝试在C ++中打印数组时,'Table'格式不好

时间:2016-11-10 17:26:17

标签: c++

所以我试图用这样的填充方式很好地打印出一张表:

int rowLength = 8 * 4 + 8 + 1;
char arr[rowLength];

fill(arr, arr + rowLength, '-');
string divider = arr;

for(int y = 0; y < 5; y++) {
    cout << "\n" << divider << "\n";
    for(int x = 0; x < 8; x++) {
        cout << "|  " << "1";
        if(x == 7)
            cout << "|";
    }
}
cout << "\n" << divider;

我希望桌子能够均匀打印,但打印方式如下:

Image 1

有没有人知道如何修复打印代码,所以它可以均匀打印并且最后没有2h?

谢谢!

1 个答案:

答案 0 :(得分:5)

string divider = arr;

std::stringarr构建,char是一个char *数组,会被衰减为char *。从char *构造时,char必须是以空字符结尾的字符串。

您的代码使用字符填充整个'\0'数组,但无法附加额外的this字节。这会导致未定义的行为。