在c++中对齐(格式化)输出//多个变量在一行中

Aligning (formatting) output in C++ // Multiple variables in a single line

本文关键字:一行 变量 输出 c++ 对齐 格式化      更新时间:2023-10-16

我试图显示(使用cout)一组点的坐标,我希望得到这样的东西:

Point 1: (    2.10 ,     3.95)
Point 2: ( -511.00 ,   108.66)
Point 3: (    0.00 , -1000.33)

我试过使用setw(), std::left, std::leftstd::internal,但我只得到这样的东西:

Point 1: (    2.10 , 3.95)
Point 2: (    -511.00, 108.66)
Point 3: (    0.00, -1000.33)

这是我输出行的一个例子:

cout << "Point: " << i;
cout << setw(8) << left << " (" << p[i][0] << ", " << p[i][1] << ")" << endl;

有人可以提供指导,我如何才能达到我想要的输出?谢谢。

您需要在插入每个数值之前立即调用setw,因为operator<<()的大多数重载都会清除宽度设置。

你可能想要

std::cout << " (" << std::setw(8) << std::right << p[i][0]
          << ", " << std::setw(8) << std::right << p[i][1] << ")" << std::endl;