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

mad*_*mma 0 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;
Run Code Online (Sandbox Code Playgroud)

而且我希望桌子能够均匀打印,但它打印如下:

图片1

有谁知道我如何修复打印代码,所以它均匀打印,最后没有2小时?

谢谢!

Sam*_*hik 5

string divider = arr;
Run Code Online (Sandbox Code Playgroud)

这是std::stringarr一个char被衰减为a 的数组构造的char *.从a构造时char *,char *必须是以null结尾的字符串.

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