2016-05-16 17 views
0

私は\tを使用して出力を取り去りますが、スペースが矛盾しています。タブ ' t'に矛盾があります

は、例えば、次のコードは、なぜこれがそうである

#include <iostream> 

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

Terms Results et(%) ea(%)

注空間

差を生成しますか?

+0

私は ''\ t''と' Result'の間にスペースを入れれば、Resultsとetの間のタブは長くなります。 – Rakete1111

+0

@ Rakete1111、これを試しましたが、出力は醜いです。 – CroCo

+8

可変スペースを必要としない場合は、タブを使用しないでください。 –

答えて

2

「tab」という単語は、「table」または「tabulate」の接頭辞です。タブの目的は、テキストをテーブル列に配置する、または段落ごとに一貫した先頭インデントを作成するなど、垂直方向の配置を生成することです。タブの目的は、等しい水平間隔を生成することではありません。あるタブがどのくらいのスペースを生成するかは、次のタブストップとの距離に依存します。だからこそ、あなたは「空間の違い」を見ているのです。

タブ文字と端末装置でのその解釈は、タイプライターのTabキーから始まります。タイプライターのTabキーを押すと、キャリッジの動きがトリガーされ、次のタブストップで停止します。タイプライターのタブストップは、機械式スライダーを動かすことによってタイピストが設定することができます。

文字表示デバイスでは、ASCII TAB文字も同様に機能し、次のタブ位置に進みます。タブストップは、通常8文字ごとです。 (いくつかの端末では、ファームウェアのメニューやホストコンピュータが生成できるエスケープシーケンスでも設定可能です)。

現代のワープロプログラムは、引き続き「ルーラー」に追加して移動できるくさび形の要素として、タイプライタータブストップスライダーを模倣しています。

このお試しください:私たちはResults et ...フィールドはタブ位置をオーバーフローしているためb後の2つのタブが使用していた

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

注:表形式のアライメントが表示されるはずです

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

を。

理想的には、テーブルの列の幅要件に基づいてタブストップを移動する必要があります。しかし、タブを動かすことは、持ち運びできないことです。この理由から、コンピュータプログラムの出力における垂直方向の整列のためにタブを使用することは、基本的には実現可能ではない。スペースを使用して列方向の書式設定を行う方が効果的です。適切な書式設定機能は、フィールド内で左、中央、または右の位置合わせを使用して、任意のフィールド幅を提供できます。

6

タブは各8番目の列を終了します。

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

文字列間に等間隔のスペースを作る方法は? – CroCo

+0

これは8スペースごとに当てはまりますか?私は、編集者が許すようにタブを2,3、または4のスペースに設定できると思った。 –

+0

@CroCo、ちょうど同数のスペースを使用しますか? – Qwertiy

関連する問題