2.2.1 操纵符(2)
因为一旦cout的状态被操纵符(除了setw)改变,这种状态将保持不变,直至发生另一次改变。
使用操纵符setw可以设置域宽。如果域宽少于所需位数,则仍将输出该项。例如,输出整型3572要求4位,如果域宽少于4位,则该整型仍将按4位输出;如果域宽大于4,则该项将在它的最左边用空格填满指定的位数。正如我们所看到的,程序员可以指定左对齐,也能改变填充的字符。域宽的默认值为0,所以每个数据项都是按其最小的位数输出的。在某一数据项输出后,域宽又重新设为0。所以,如果几个数据项都要按某一特定的域宽进行写入,则必须在每个项写入前进行设定。
例2-12演示了典型操纵符的用法,但因系统不同会有所差异。
例2-12
以下代码段打印数字1、10、100和1000,域宽为6,采用右对齐方式
操纵符setw必须按照如上方式使用。例如,代码段
的输出为
这是因为在域宽被设为6后,输出了1,然后域宽又被恢复成它的默认值0,所以只有第一行的域宽为6。
操纵符setfill用来定义特定的填充字符,当域宽大于输出项宽度时用该字符填充多余的位。
例2-13
以下代码打印数字1、10、100和1000,域宽为6,采用右对齐方式,使用星号来填充多余的位:
代码的输出为
注意,填充字符一旦设定,它的作用将一直持续到重新设置为止。
操纵符setprecision用来定义浮点数的精度,默认值为6。
例2-14
代码段