我想要很好地格式化网格。它是9x9网格。我想划分它
每隔3列后- 输入“*”
否则 - '\ t'。
每隔3行后放“-------------------------”
水平线效果很好 - 这很容易。
但在第3栏中,它开始只打印2-3个空格而不是'\ t'。
代码:
static int grid[9][9] ;
void print_grid(){
cout << "PRINTING GRID" <<endl ;
for(int row = 0 ; row < 9 ; row++){
for(int column = 0 ; column < 9 ; column++){
if(column > 0 && (column + 1) % 3 == 0 && (column + 1) != 9 )
cout <<grid[row][column] << " * " ;
else cout <<grid[row][column] <<"\t" ;
}
if( (row+1) % 3 == 0){cout <<endl ;
cout << "---------------------------------------------------------------------" <<endl ;}
else cout <<endl <<endl ;
}
}
int main(){
print_grid() ;
return 0 ;
}
我的问题是:在红色区域为什么打印2-3个空格而不是“\ t”? 为什么't'改变它的长度?
答案 0 :(得分:1)
Tab键没有一定的长度,它所做的只是将光标前进到文档中的下一站。
停靠点之间的距离长度因系统而异。
答案 1 :(得分:1)
你的代码很好。这只是标签在控制台中的工作方式,它们会转到下一个标签停止,这将是非常8个字符。如果自上次制表符停止后已有5个字符,则只会前进3个字符。
您可以通过使用echo
检查是否获得了类似的结果echo -e "X\tX\nXXXXX\tX"
X X
XXXXX X
如果您想要更多空间,可以使用两个连续的标签。如果你想要更多地控制对齐,你可以停止使用标签并尝试使用std :: setw。
答案 2 :(得分:1)
你真的不希望tab
在这里你想要使用iostream alignment manipulators。