e.g. 作用——函数——函数所属文件
1.设置浮点数的精度——setprecision(n) ——<iomanip>
n代表有效数位,包括整数和小数的位数。
使用后将其后所有数值精度改变,直到再次使用此函数改变精度为止。
2.设置输出域宽和对齐方式——setw(n)——<iomanip>
n是输出数据占用屏幕宽度的字符数,默认为右对齐。
若输出的数据实际位数比n大,则输出的数据将自动扩展到所需占用的列数。
setw()只对紧随其后的一个输出数据有效。
3.设置对齐方式——(+re取消)setiosflags(long f)——<iomanip>
区域内的动作:
iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点
数,并且在允许的精度范围内尽可能的把数字移向小数点右侧;
iso::right 也是setiosflags 的参数,该参数的指定作用是在指定区域内右对齐输出;(iso::left亦然)(两者属于<iostream>)
setprecision 也是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是设定浮点数;
setprecision(2) 的意思就是小数点输出的精度,即是小数点右面的数字的个数为2。
cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);
合在一起的意思就是,输出一个右对齐的小数点后两位的浮点数。
4.为变量输入空白字符问题
(1)用get()函数输入空白字符
用法 :cin.get(char c);//or getchar()
(2)用getline()函数输入包含空白的长字符串
getline()函数一次读取一行的字符,其用法如下:
cin.getline(char *c,int n,char ='\n');
c是保存输入数据的数组;n是要提取的字符的个数,指示从输入流中读取n-1个字符到数组c中(系统会在第n个位置填写结束符‘\0');第三个参数用于指定停止从输入流中提取数据的结束符(默认结束分隔符为‘\n',可以在此指定其他的结束字符)
getline()的两种结束方法:1)输入流中的字符个数多于getline()指定的个数,即读够了n-1个字符;
2)虽然没有读够n-1个字符,但遇到了指定的结束符号。
getline()函数没有读取输入数据就结束的问题根源及解决方案:
(1)根源:当输入流中的字符多于getline()指定接收的字符个数时,getline()将把余下的字符留在输入流中,同时会设置输入失效位,并关闭输入。也就是说,此getline()命令之后的所有cin语句都失效,不会再被执行了。
(2)解决方案
1)getline()函数第二个参数设置一个更大的数字;
2)先调用cin对象的clear函数,将设置为失效的输入位重新设置为有效。其后调用cin对象的ignore()函数,忽略残留在输入流中的多余字符。
用法:cin.clear();
cin.ignore();//忽略一个字符
or cin.ignore(1024,'\n');//忽略1024个字符,或遇到回车字符就结束
原型:cin.ignore(int nCount = 1, char delim = EOF)
nCount是忽略掉的字符个数,默认为1,delim可以指定结束符的位置,默认值为EOF。结束方式:一超,二结束符。