August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
使用scientific和fixed格式,程序员可以精确控制一个值输出所占用的宽度。显然,这对于打印表格这类应用来说很有用。整数输出也有类似的机制,称为域(field)。你可以使用“设置域宽度”操纵符setw()精确指定一个整数或一个字符串输出占用多少个位置。例如:
会输出:
首先注意第三个123456之前的两个空格,这就是我们所期望的效果——一个6位数字的数占用一个8个字符的域。但是,当你指定一个4个字符的域时,123456不会被截取来适应域宽。为什么不截取呢?|1234|或|3456|对于宽度为4字符的域来说都是适合的,但它们完全改变了要输出的值,而且没有给用户任何警告信息。ostream是不会这样做的,相反,它会打破输出格式。坏的格式总比“坏的输出数据”更好些。而且在使用域最多的应用中(例如打印表格),“溢出”问题是很容易注意到的,因此能被修正。
域也可作用于浮点数和字符串,例如:
会输出:
注意,域的宽度不是持久的。在上述3个例子中,第一个和最后一个例子值的输出方式是默认的“它需要多少位置就占用多少位置”格式。换句话说,除非你在语句中直接在输出操作之前设置域宽,否则不会有域的限制。 ...