所以我试着打印出一个表格,即使是填充也是如此:
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)
而且我希望桌子能够均匀打印,但它打印如下:
有谁知道我如何修复打印代码,所以它均匀打印,最后没有2小时?
谢谢!
string divider = arr;
Run Code Online (Sandbox Code Playgroud)
这是std::string从arr一个char被衰减为a 的数组构造的char *.从a构造时char *,char *必须是以null结尾的字符串.
您的代码char用字符填充整个数组,但无法附加额外的'\0'字节.这导致未定义的行为.