流有许多不同寻常的特性,其中之一就是,向 清洗 槽中抛入的可以不仅限于 数据 。C++的流还可以识别出控制符(manipulator),这些控制符是一些对象,它们可以改变流的行为,而不是为流提供数据,或者除了为流提供数据之处还可以改变流的行为。
你已经看见过一些控制符 endl。endl 控制符封装了数据和行为。它告诉流输出一个回车并刷新输出其缓冲区。下面是一些其他有用的控制符,其中许多都是要标准头文件<ios>和<iomanip>中定义的。
-
Boolalpha和noboolalpha。告诉流把bool输出为true和false(boolalpha) 或者1和0(noboolalpha)。默认为noboolalpha。
-
hex、oct和dec。分别以 十六进制 、八进制和十进制输出数字。
-
setprecision。设置输出数值数据时的宽度。这是一个参数化的控制符。
-
setw。设置输出数值数据时的字段宽度。这是一个参数化的控制符。
-
setfill。数字宽度小于指定宽度时,这个控制符可以指定填充空位的字符。这是一个参数化的控制符。
-
showpoint和noshowpoint,对于没有小数部分的浮点数或者又精度数。这个控制符强制流总是(showpoint)或者(noshowpoint)从不显示小数点。