C ++中单词之间的常量制表空间

时间:2012-03-29 22:57:50

标签: c++ tabs spacing

  

可能重复:
  C++ alignment when printing cout <<

我在输出文件中写了一组单词。我在单词之间使用'\ t'字符留下了三个制表空间。但有时当单词太小或太大时,对齐似乎存在问题。如何在单词之间给出一个恒定的空格,即使单词很小也可以使用?

这就是我在说什么。

    Word:elpmas         Count:1
    Word:This           Count:4
    Word:pmasel         Count:1
    Word:is         Count:1
    Word:sample         Count:1
    Word:sentence           Count:1
    Word:si         Count:1
    Word:a          Count:1

我希望在单词和计数之间有一个恒定的空格。我目前使用

cout<< "Word:"<< hash->key <<"\t\t\t" << "Count:" << hash->value <<endl;

帮帮我。

2 个答案:

答案 0 :(得分:5)

setw流操纵器可用于对齐表格输出中的列。例如,

cout << "Word:" << setw(15) << hash->key << " Count:" << hash->value << endl;

如果您的密钥最多为15个字符,则会正确对齐您的输出。

答案 1 :(得分:1)

标签移动到特定的“固定列”位置。您的标签看起来像4个字符制表符

根据打印选项卡时的位置,将显示1到4个字符到下一个选项卡列的任何内容。

因此,您需要在打印选项卡之前跟踪(或计算)当前位置。在您的情况下,看起来每行都以“Word:”开头,其中三个字符留在选项卡列中。因此,如果一个单词少于三个字符,则需要一个“额外标签”。

此外,如果一个单词长于(3 + 4)个7个字符,则需要少一个单词。

总结一下,如果你想用你的代码控制布局,使用标签,你需要根据字宽使用一个变量号。