C++ 如何以c+;对齐打印此文件+;?

C++ 如何以c+;对齐打印此文件+;?,c++,c++14,c++17,C++,C++14,C++17,如何在打印代码时留出足够的空间使输出有条理?我尝试了/t但没有成功。我试图用“”手动添加空格,但由于结果会根据给定的输入而变化,因此我无法将其完全对齐 如果你能帮忙我会很感激的谢谢你!(代码是用c++编写的)我猜您正在使用“std::cout”打印数字。如果是,您可以在打印号码之前指定一些格式化详细信息。你有更多的细节 在你的情况下,我会尝试以下方式: #include <iostream> #include <iomanip> int main(){ doub

如何在打印代码时留出足够的空间使输出有条理?我尝试了
/t
但没有成功。我试图用
”手动添加空格,但由于结果会根据给定的输入而变化,因此我无法将其完全对齐


如果你能帮忙我会很感激的谢谢你!(代码是用c++编写的)

我猜您正在使用“std::cout”打印数字。如果是,您可以在打印号码之前指定一些格式化详细信息。你有更多的细节

在你的情况下,我会尝试以下方式:

#include <iostream>
#include <iomanip>

int main(){
    double l11 = 6, l12 = 403.429, l13 = 1.79146, l14 = 2.44949;
    double l21 = 9, l22 = 8103.08, l23 = 2.19722, l24 = 3;
    double l41 = 15, l42 = 3.26902e+06, l43 = 2.70805, l44 = 3.87298;

    std::cout << std::setfill(' ') << std::setw(3) << l11 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l12 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l13 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l14 << std::endl;

    std::cout << std::setfill(' ') << std::setw(3) << l21 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l22 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l23 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l24 << std::endl;

    std::cout << std::setfill(' ') << std::setw(3) << l41 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l42 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l43 << " ";
    std::cout << std::setfill(' ') << std::setw(15) << l44 << std::endl;
}
<如何打印C++中的完美对齐?

您可以使用以下算法:迭代每一行和每一列,并计算每个单元格的宽度。在每列中保留最宽单元格的计数。现在您知道了每列的宽度,再次迭代数据,打印值并将每个单元格填充到该宽度

该算法很简单,但需要一点努力才能正确实现,因此需要进行彻底的测试


您的数据似乎是数字,因此这不应该是一个问题,但一般来说:如果您想支持Unicode,计算字符串的宽度实际上是相当棘手的。这不仅是因为一个显示“字符”可能由多个字元组成,每个字元可能由多个代码点组成,每个代码点可能由多个代码单元组成(代码单元在C++中是“字符”类型)。。。但也因为这些字符的宽度可能比固定宽度字体的单列宽。C++标准对Unicode几乎没有支持。POSIX标准中有
wcswidth
就是为了这个目的。

你能想出一个规则来告诉你要使用多少空格吗?如果你使用
std::cout
打印,这会很有帮助。正在查找重复项。您当前的代码是什么样子的(请相应地编辑您的问题)?您正在打印的“数字”,它们真的是数字吗?它们是字符串吗?嗨,欢迎来到StackOverflow:)我们不会在这个网站上为您编写整个程序。相反,你需要自己尝试一下,并就你遇到困难的部分提出一个具体的问题。请拿着这本书看看。此外,您还将获得一枚参加巡演的徽章:)
  6         403.429         1.79146         2.44949
  9         8103.08         2.19722               3
 15     3.26902e+06         2.70805         3.87298