制表符't'的间距不一致
Tab ' ' has inconsistent spacing
我使用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 ...
字段溢出了选项卡位置。
理想情况下,我们应该根据表中列的宽度要求来移动制表位。但是移动制表符是非常不便携的。因此,在计算机程序的输出中使用制表符进行垂直对齐基本上不太可行;使用空格可以更好地实现列格式。一个好的格式化功能可以提供任意的字段宽度,在字段内向左、居中或向右对齐。
相关文章:
- 大于65535的C++数组[size]引发不一致的溢出
- 在 C++(和 C)中进行类型转换时明显不一致
- 填充上编译器生成的复制构造函数之间的不一致
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- CreateDIBSection为同一图像返回不一致的位图位值
- 在 Qml 中从 QSqlTableModel 中删除单行时视图不一致
- 模板参数推导不一致
- 声明中不一致的no是否违反ODR?
- 如何删除分支因子不一致的树,最大为 30,40
- 从 C++ 函数与 Python 函数返回的不一致值用于偏斜正态分布
- 从 C 字符串构造 std::string 与从另一个 std::string 构造 std::string 不一致
- 这种比较是否不一致(或者存在其他问题)?
- 以下可变参数模板行为是否不一致?
- 如何修复我的链表读数不一致的问题?
- 在C++17中,为什么类模板和函数模板的指针类型推导明显不一致
- void 函数中的指针参数返回不一致的值
- 如何查找导致结果不一致的代码
- 跨平台 mySQL 与字符集不一致
- C++:不一致的 std::p ow( 类型 ) 定义
- 制表符't'的间距不一致