制表符't'的间距不一致

Tab ' ' has inconsistent spacing

本文关键字:不一致 制表符      更新时间:2023-10-16

我使用t来分隔输出,但它会产生不一致的空间。

例如,以下代码生成

#include <iostream>
int main()
{
    std::cout << "TermstResultstet(%)tea(%)n";
    return 0;
}

Terms Results et(%) ea(%)

注意空间的差异

为什么会这样?

选项卡结束每8列。

v       v       v       v       v
1234567812345678123456781234567812345678
Terms   Results et(%)   ea(%)

单词"tab"是"table"或"tabulate"的前缀。选项卡的目的是生成垂直对齐,例如将文本排列到表格列中,或为每个段落实现一致的前导缩进。选项卡的目的不是生成相等的水平间距。一个制表符产生的空间大小取决于它离下一个制表位的距离。这就是您看到"空间差异"的原因。

制表符及其在终端设备上的解释源于打字机上的制表键。打字机上的Tab键触发滑架的运动,滑架在下一个制表位停止。打字员可以通过移动机械滑块来配置打字机制表位。

在字符显示设备上,ASCII制表符的作用类似:它前进到下一个制表符位置。制表符通常每八个字符一次。(在一些终端上,它们可以通过固件中的菜单进行配置,甚至可以通过主机生成的转义序列进行配置)。

现代文字处理程序仍然将打字机的制表位滑块模仿为楔形元素,可以添加到"标尺"上并四处移动。

试试这个:

std::cout << "TermstResultstet(%)tea(%)n";
std<<cout << "atbttcn"

您应该看到表格对齐:

Terms   Results et(%)   ea(%)
a       b               c

请注意,我们必须在b之后使用两个选项卡,因为Results et ...字段溢出了选项卡位置。

理想情况下,我们应该根据表中列的宽度要求来移动制表位。但是移动制表符是非常不便携的。因此,在计算机程序的输出中使用制表符进行垂直对齐基本上不太可行;使用空格可以更好地实现列格式。一个好的格式化功能可以提供任意的字段宽度,在字段内向左、居中或向右对齐。