我经常遇到这样一种情况,我想要将一个二维数组打印到屏幕或文件中。我的标准方法是:
for(int q=0; q<x; q++)
{
cout << "\n";
for(int w=0; w<y; w++)
cout << number[q][w] << "\t";
}但是,当number的元素长度变化时,这通常会导致列不能正确对齐。如何在每个数字之后(或之前)添加正确数量的空格,以使列对齐?
发布于 2012-07-05 03:06:38
使用std::setw()、std::left and std::right。
#include <iostream>
#include <iomanip>
void printNumber(int x) {
std::cout << "X:" << std::setw(6) << x << ":X\n";
}
void printStuff() {
printNumber(528);
printNumber(3);
printNumber(73826);
printNumber(37);
}
int main() {
std::cout << "Left-aligned\n";
std::cout << std::left;
printStuff();
std::cout << "Right-aligned\n";
std::cout << std::right;
printStuff();
}输出:
Left-aligned
X:528 :X
X:3 :X
X:73826 :X
X:37 :X
Right-aligned
X: 528:X
X: 3:X
X: 73826:X
X: 37:X(演示:http://ideone.com/6IdIc。)
在本例中,我使用6作为期望的最大宽度。如果您不知道最大值,则需要对数据进行一次初始遍历以找出答案,或者只使用您正在使用的数据类型的最大值(为了使其可移植,您可以使用std::numeric_limits::max)。
https://stackoverflow.com/questions/11334271
复制相似问题