学过C语言的都知道 ,对于C语言的格式化输出很简单的,毕竟是面向过程的语言.
例如: 输出特定的位数:
float a = 10.0;
printf("%3.3f",a);
输出的结果就是10.000了.
3.3的含义就是: 对于第一个3 没啥作用,对于小数点后的3代表 小数点后保留三位.在这里就不在列举其他的了,有兴趣的可以试试其他书.下面我们进入正题.
setf()有两种原型,分别是:
1.fmtflags setf(fmtflags) //原型一
2.fmtflags setf(fmtflags,fmtflags) //原型二
// fmtflags 是 bitmask 类型(一种用来存储各个位值的类型)的typedef 名
// 显而易见,两个原型的区别就在参数的个数上
setf()的第一个原型:
C++ 为标准输入和输出定义了一些格式标志,他可以通过flags() setf() 和 unsetf() 这函数来控制.
例如:
cout.setf(ios_base::left); //表示对所有的cout的输出进行左对齐调整.
还有一些常见的标志:
// 形式一:
cout << showpos << 255 <<endl;
//形式二:
showpos(cout);
cout << 255 <<endl;
//形式三:cout.setf(ios_base::showpos);
cout << 255 <<endl;结果:
+255
+255
+255
也可以通过使用下面的操作符:
例如当我们设置dec和 标志时;
cout << dec; // 设置dec 表示
设置endl 标志时
cout << endl; //输出换行标识,并清空缓存区
iostream中定义的操作符:
iomanip中定义的操作符:
#include <iomanip>
cout << setiosflags(ios_base::scientific) << 255.255 << endl;
cout << setiosflags(ios_base::scientific); //启用scientific标志
cout << resetiosflags(ios_base::scientific); //关闭scientific标志
cout << setprecision(4) << 255.255 << endl; //设置输出数值的精度为4位2.552550e+02
255.3
setf()的第二原形:
第二原型包含两个参数,第一个参数和第一原型里的参数一样,第二个参数指出要清除第一参数中的哪些位,也就是说,在第二原型中,第一个参数指出要设置哪些位,第二个参数指出要清除哪些位。
虽然听起来很麻烦,但实际上用起来却很简单,只需按自己的实际需求在下表中找到对应的参数套上去就可以了。