这边需要注意的是如果使用到setpercision,一定要引入iomanip头文件,否则编译会出错
注意以下的操作流算子都是在头文件iomanip中定义的,强烈建议使用的时候引入改头文件否则可能会出现错误
默认情况下使用的算子(也可以理解为没有使用任何算子的时候输出遵循的规则)
dec:以十进制输出整数
right:右对齐,如果宽度不够的时候,将填充字符添加到右边(该句子的意思就是,一般情况下左右对齐是与setw一起配套使用的,否则左右对齐难以体现出来,此时通过setw设置最小的输出字段,如果此时输出的字段的长度小于最小的字段输出长度,那么填充字符就是在左边进行填充,反之左对齐就是在右边进行填充)
这边需要注意主要设置一次之后,后面的输出方式就是设置的方式了,除非再次通过算子进行修改,否则不会变化
nobooolalpha:true和false输出为0,1
noshowpoint:只有当小数部分存在时候才显示小数点,即1.00的输出为1
noshowpos:在非负数值中不显示+
skipws:输入时跳过空白字符(如果设置为noskipws,那么在读入数字的时候会爆炸,只要存在空格就不会读入数字了,这点需要注意)
nouppercase:十六进制中使用a-e,若输出前缀则为0x,科学计数法中输出的为e
也就是只要不是字符串中的输出(包括字符),那么都是使用小写输出
其他算子:
hex:以十六进制形式输出整数
oct:以八进制形式输出整数
fixed:定点数,可以这样记忆,以普通小数形式输出浮点数
scientific:以科学计数法形式输出浮点数
left:左对齐
setbase:设置输出整数时的进制,注意里面的形参只能为8,10,16
setw:设定下一个输出字段的最短长度,注意也可以定义输入字符串读入的字符个数
setfill:通常与setw配套使用,控制的是最小输出字段的长度不够时进行填充的字符
eg:cout << setw(3) << setfill('@') << 1 << endl;
output:@@1
setprecision:注意精度的设置适用于浮点数的输出
在使用非fixed并且非scientific方式进行输出的情况下,里面的形参n控制的是有效数字个数,如果整数部分的数字个数大于n,那么输出形式会变成科学计数法,如果n会到达小数部分,那么输出是按照四舍五入的方式进行输出
注意该精度并不会将1.2000后面的0输出
eg:cout << setprecision(10) << 1.2000 << endl;
如果使用了fixed或者scientific那么n代表的是保留小数点后的n位数字
output:1.2
setiosflags:将某个输出格式标志置为1
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
也就是说下面的两个输出方式的效果是一致的
eg:
cout << setiosflags(ios::fixed) << setprecision(10) << 1.20 << endl;
cout << fixed << setprecision(10) << 1.20 << endl;
resetiosflags:将某个输出格式标志置为0
boolapha:把true和false输出为字符串
showbase:输出表示数值进制的前缀
showpoint:总是输出小数点
showpos:在非负数值中显示+
noskipws:输入时不跳过空白字符
uppercase:与nouppercase的作用相反
internal:符号左对齐,数值右对齐(对于有符号的数字的一种规范)
fixed:小数以定点数的形式输出
scientific:小数以科学计数法的形式进行输出