所以我试图用这样的填充方式很好地打印出一张表:
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;
我希望桌子能够均匀打印,但打印方式如下:
有没有人知道如何修复打印代码,所以它可以均匀打印并且最后没有2h?
谢谢!
答案 0 :(得分:5)
string divider = arr;
此std::string
由arr
构建,char
是一个char *
数组,会被衰减为char *
。从char *
构造时,char
必须是以空字符结尾的字符串。
您的代码使用字符填充整个'\0'
数组,但无法附加额外的this
字节。这会导致未定义的行为。