C ++对齐整数列

时间:2019-06-28 21:19:48

标签: c++ format iostream

我的目标是使3列整数对齐,如下所示:

3       109     136     223
4       95      237     230
5       200     76      153

使用我的代码,这是我得到的输出:

enter image description here

我使用for循环遍历向量并打印数字。

这是我的打印这些数字的for循环:

for (int i = 0; i < v.size(); i++)
  {
    cout << (i + 1);
    cout.setf(ios::left);

    cout.width(6);
    cout << " " << v[i].firstColumn;

    cout.width(8);
    cout << " " << v[i].secondColumn;

    cout.unsetf(ios::left);
    cout << endl;
  }

我怎样才能使所有整数很好地对齐?似乎较高的数字会使列偏移(IE从9变为10)。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您的代码与您的目标不符。但是通常,您需要为每个列设置一个width,包括保存i + 1值的列,例如:

for (int i = 0; i < v.size(); i++)
{
    fmtflags oldflags = cout.setf(ios::left);
    cout << std::setw(8) << i + 1;
    cout << std::setw(8) << v[i].firstColumn;
    cout << set::setw(8) << v[i].secondColumn;
    ...
    cout.flags(oldflags);
    cout << endl;
}