7.3.1节讲述了各种格式标识和操作符。本小节将详细讲解如何使用格式化中的字段宽度、填充字符和位置调整。
1.字段宽度
width()函数用来定义字段宽度。其原型包括两种:有参数和无参数。
对于输出而言,width()函数定义了最小字段,此设置用于下一次格式化输出。调用该函数时,若无参数,该函数返回当前字段宽度;若传入一个整数,则会改变字段宽度为该整数宽度,并返回当前宽度。字段宽度的最小默认值是0。该函数的作用仅限于“下一次”格式化输出。
setw()函数同样可以为输出的数值设置字段宽度,其功能相当于width()。其原型为:
setw()函数还可以将设置字段宽度命令插入输出流和输入流中,比单独调用格式化函数更加方便。当需要显示的数值比设置的字段宽度大时,将显示整个数据值,这有可能会影响后面的数据输出或者后面输出的数据格式。
值得一提的是,当在输入流中设置字段宽度时,若使用字符数组和字符型指针,尤其是字符型指针,则不能用函数sizeof(char∗)来计算该字符型数组的字符数目。例如,
正确:
错误:
若使用string类型,则不会有以上麻烦。例如,
正确:
2.填充字段
fill()函数定义用来填充“格式化表述”和最小字段之间的填充字符。默认的填充字符是空格符。(www.xing528.com)
setfill()函数同样可以定义填充字符,其作用相当于fill()函数。例如,
再如,
3.格式化中的位置
输入和输出中的字段位置一般是指字段的左对齐、右对齐和“符号靠左对齐,数值靠右对齐”。标识left代表靠左对齐;标识right代表靠右对齐;标识internal代表符号靠左对齐,数值靠右对齐;none是默认的靠右对齐。使用字段位置时,如果输出数值或字符所占宽度小于设置的字段宽度,其余位置需要由特定字符填充。
单一字符的对齐方式在标准化过程中发生变化。标准化之前,面对单个字符,忽略字段宽度,直至下一次多字符格式化输出时才使用。在输入和输出时,设置字段位置有两种方法:setf()和unsetf();或者setiosflag()和resetiosflags()。setf()和unsetf()函数的原型为:
或者
以上函数均包含在头文件<iomanip>和<iostream>中。
例7-6
例7-6的执行效果如图7-3所示。
图7-3 例7-6的执行效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。