标准输出设备
向文本文件输出
标准输出设备显示器被系统看作文本文件,所以我们以向标准设备输出为例,介绍文本文件输出格式控制。
插入运算符
- 插入(<<)运算符
- 为所有标准C++数据类型预先设计的,用于传送字节到一个输出流对象。
操纵符(manipulator)
- 插入运算符与操纵符一起工作
- 控制输出格式。
- 很多操纵符都定义在
- ios_base类中(如hex())、头文件(如setprecision())。
- 控制输出宽度
- 在流中放入setw操纵符或调用width成员函数为每个项指定输出宽度。
- setw和width仅影响紧随其后的输出项,但其它流格式操纵符保持有效直到发生改变。
- dec、oct和hex操纵符设置输入和输出的默认进制。
setiosflags操纵符
- 这个程序中,通过使用带参数的setiosflags操纵符来设置左对齐,setiosflags定义在头文件iomanip中。
- 参数iosbase::left是iosbase的静态常量,因此引用时必须包括ios_base::前缀。
- 这里需要用resetiosflags操纵符关闭左对齐标志。setiosflags不同于width和setw,它的影响是持久的,直到用resetiosflags重新恢复默认值时为止 。
- setiosflags的参数是该流的格式标志值,可用按位或(|)运算符进行组合
setiosflags的参数(流的格式标识)
- ios_base::skipws 在输入中跳过空白 。
- ios_base::left 左对齐值,用填充字符填充右边。
- ios_base::right 右对齐值,用填充字符填充左边(默认对齐方式)。
- ios_base::internal 在规定的宽度内,指定前缀符号之后,数值之前,插入指定的填充字符。
- ios_base::dec 以十进制形式格式化数值(默认进制)。
- ios_base::oct 以八进制形式格式化数值 。
- ios_base::hex 以十六进制形式格式化数值。
- ios_base::showbase 插入前缀符号以表明整数的数制。
- ios_base::showpoint 对浮点数值显示小数点和尾部的0 。
- ios_base::uppercase 对于十六进制数值显示大写字母A到F,对于科学格式显示大写字母E 。
- ios_base::showpos 对于非负数显示正号(“+”)。
- ios_base::scientific 以科学格式显示浮点数值。
- ios_base::fixed 以定点格式显示浮点数值(没有指数部分) 。
- ios_base::unitbuf 在每次插入之后转储并清除缓冲区内容。
精度
-
- 浮点数输出精度的默认值是6,例如:3466.98。
- 要改变精度:setprecision操纵符(定义在头文件iomanip中)。
- 如果不指定fixed或scientific,精度值表示有效数字位数。
- 如果设置了iosbase::fixed或iosbase::scientific精度值表示小数点之后的位数,若没有只是表示正常输出几位数字