有时ACM或者程序需要在输入输出时有一些特定格式,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C提供了在输入输出流中使用的控制符(有的书中称为操纵符)
**需要注意的是:以下函数包含在头文件iomanip。(顺便说一下从Linux GCC 4.8.0开始加入头文件bits/stdc.h,虽然不是标准头文件,但这个头文件着实顺手,平时用的头文件都在里面)**
操纵符 | 作用 |
---|---|
setfill(ch) | 设置填充字符ch,ch可以是字符常量或字符变量 |
setprecision(n) | 将浮点精度设置为n |
setw(n) | 读或写值宽度为n个字符 |
setbase(int base) | 将整数输出为base进制 |
当base数值为 | |
8 | 八进制 |
10 | 十进制 |
16 | 十六进制 |
other | 默认输出 |
setiosflags | 设置数据格式为…… |
resetiosflags | 重置数据格式 |
setiosflags (ios_base::fmtflags mask); | fmtflags可添加类型 见下表 |
setiosflags能添加的fmtflags有如下
操纵符 | 作用 |
---|---|
boolalpha | 将true和false输出为字符串 |
showbase | 对整型值输出表示进制的前缀 |
showpoint | 对浮点值总是显示小数点 |
showpos | 对非负数显示+ |
skipws | 输入运算符跳过空白符 |
unitbuf | 每次输出操作后都刷新缓冲区 |
uppercase | 转换为大写输出英文字符 |
dec | 整型值显示为十进制 |
hex | 整型值显示为十六进制 |
oct | 整型值显示为八进制 |
fixed | 设置浮点数以固定的小数位数显示 |
scientific | 浮点值显示为科学技术法 |
internal | 在符号和值之间添加填充字符 |
left | 在值的右侧添加填充字符 |
right | 在值的左侧添加填充字符 |
定义在iostream中的操纵符
操纵符 | 作用 |
---|---|
boolalpha | 将true和false输出为字符串 |
*noboolalpha | 将true和false输出为1,0 |
showbase | 对整型值输出表示进制的前缀 |
*noshowbase | 不生成表示进制的前缀 |
showpoint | 对浮点值总是显示小数点 |
*noshowpoint | 只有当浮点值包含小数部分时才显示小数点 |
showpos | 对非负数显示+ |
*noshowpos | 对非负数不显示+ |
uppercase | 在十六进制值中打印0X,在科学记数法中打印E |
*nouppercase | 在十六进制值中打印0x,在科学记数法中打印e |
*dec | 整型值显示为十进制 |
hex | 整型值显示为十六进制 |
oct | 整型值显示为十进制 |
left | 在值的右侧添加填充字符 |
right | 在值的左侧添加填充字符 |
internal | 在符号和值之间添加填充字符 |
fixed | 浮点值显示为定点十进制 |
scientific | 浮点值显示为科学记数法 |
hexfloat | 浮点值显示为十六进制 |
defaultfloat | 重置浮点数格式为十进制 |
unitbuf | 每次输出操作后都刷新缓冲区 |
*nounitbuf | 恢复正常的缓冲区刷新方式 |
*skipws | 输入运算符跳过空白符 |
noskipws | 输入运算符不跳过空白符 |
flush | 刷新ostream缓冲区 |
ends | 插入空字符,然后刷新ostream缓冲区 |
endl | 插入换行,然后刷新ostream缓冲区 |
*表示为默认流状态 |