我正在使用\t
來隔離我的輸出,但它會產生不一致的空格。Tab' t'間距不一致
例如,下面的代碼產生
#include <iostream>
int main()
{
std::cout << "Terms\tResults\tet(%)\tea(%)\n";
return 0;
}
Terms Results et(%) ea(%)
注空間
的差別爲什麼會這樣呢?
我正在使用\t
來隔離我的輸出,但它會產生不一致的空格。Tab' 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 ...
場溢出標籤的位置。
理想情況下,我們應該根據表格中列的寬度要求移動製表位。但移動製表符停止是非常不便攜的。出於這個原因,在計算機程序的輸出中使用製表符垂直對齊基本上不是很可行;使用空格可以更好地實現列式格式。一個好的格式化函數可以提供任意的字段寬度,在一個字段中可以左對齊,居中或右對齊。
這太奇怪了,如果我在''t''和'Result'之間放置一個空格,Result和et之間的選項卡會更長.... – Rakete1111
@ Rakete1111,我試過這個,但輸出很難看。 – CroCo
如果您不想要變量間距,請勿使用選項卡。 –