我正在使用\t隔开我的输出,但是会产生不一致的空格。

例如,以下代码产生

#include <iostream>

int main()
{
    std::cout << "Terms\tResults\tet(%)\tea(%)\n";
    return 0;
}



  Terms Results et(%) ea(%)


注意空间上的差异

为什么会这样呢?

最佳答案

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

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

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

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

尝试这个:

std::cout << "Terms\tResults\tet(%)\tea(%)\n";
std<<cout << "a\tb\t\tc\n"


您应该看到表格对齐方式:

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


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

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

关于c++ - 制表符'\t'的间距不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37262304/

10-12 03:08