C++语言程序设计

2.7.3 格式化
有两种方法设置变量的输出格式：一种方法是直接设置输出流的格式状态，另一种方法是通过输入输出操纵符。
如果选择前者，需要设置与输出流相关的标志，此后，任何数据输出到该流，将按照标志决定的格式输出；如果选择后者，可将格式化的命令嵌入到输入输出语句中。
前者也许更好，因为，我们常常为所有的输出选择一种格式，也就是说，常常不需要大量的、不同的格式。与输出流格式状态相关的标志有许多，我们仅讨论最常用的两种：精度（precision）和宽度（width）。精度是指小数点后的数字位数，宽度是指变量输出的总位数。设置精度和宽度的形式如下：
cout.precision(4);
cout.width(10);
用下面的语句，我们可以得到当前的精度和宽度：
n = cout.precision();
m = cout.width();
一旦设置了precision，在下一次设置以前，原设置值保持不变。width有所不同，它是数据输出的最小位数，如果宽度不够，则会分配更多的位数。也就是说，当width位数不够时，输出的数据不会被截断。而且输出操作完成后，width会恢复为缺省值。还有一些标志可以设置浮点数的固定或指数表示、输出值的对齐方法（右、左或中间）、是否显示尾部0，这些标志用成员函数setf设置。例如，假定要使用标准输出，指数表示、左对齐及显示尾部0，可以使用下面的语句：
cout.setf(ios::left, ios::adjustfield);
cout.setf(ios::showpoint, ios::showpoint);
cout.setf(ios::scientific, ios::floatfield);