C++的cout,cin等为ios类的派生类,可进行格式化输入输出
一.用到的ios类中的几个静态常量:
left,right,dec,oct,hex,showbase,showpoint,showpos,scientific,fixed,uppercase,lowercase
left 左对齐
right 右对齐
dec 置基数为10 相当于"%d"
hex 置基数为16 相当于"%X"
oct 置基数为8 相当于"%o"
showbase 显示进制
showpoint 强制显示小数点
showpos 强制显示符号
scientific 指数形式
fixed 固定的浮点显示
uppercase 16进制数大写输出
lowercase 16进制小写输出 //VS2010中已不使用
二.函数
类中成员函数(如cout.setf() ) |
相应的全局函数 |
setf(),flags() |
setiosflags() |
precision() |
setprecision() |
width() |
setw() |
fill() |
setfill() |
|
setbase() |
|
resetiosflags() |
如:cout.flags(ios::left|ios::hex|ios::showbase);
setiosflags(ios::left|ios::hex|ios::showbase);
2.cout.precision(n),setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)等与setiosflags(ios::fixed)等合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosflags(ios::scientific)等合用, 可以控制指数表示法中系数的小数点后的位数。setiosflags(ios::scientific)是用指数方式表示实数。
如果setprecision(n)等设置了,但setiosflags(ios::fixed)没设置,即显示常规浮点数时,指总共的位数。
如果setprecision(n)等设置了,但setiosflags(ios::scientific)没设置,当浮点数较大,系统自动显示指数形式时,此时指系数总共的位数。
3.fill(char c),setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
4.setw只作用于紧随其后的部分!!!
5.setbase(int n) : 将数字转换为 n 进制.不是一次性的,而且能覆盖之前设置的ios::oct,ios::dec,ios::hex等
6.resetflags(long f),该方法是setiosflags方法的反向方法,即清除之前语句中所使用的setiosflags设定的格式,恢复为默认格式。
取消哪个格式,参数就放哪个格式
如:cout.flags(ios::oct);
cout<<12<<endl;
cout<<resetiosflags(ios::oct);//取消ios::oct
cout<<12<<endl;
运行结果:14
12
例子:
#include<iostream>
#include<iomanip>
using
namespace
std;
int
main()
{
cout<<12345.0<<endl;
//输出"12345"
cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;
//输出"1.234"(遵循四舍六入五成双的原则,而不是四舍五入的原则)
cout<<resetiosflags(ios::fixed);
//需要用resetiosflags()函数清除前面的输出格式
cout<<setiosflags(ios::scientific)<<12345.0<<endl;
//输出"1.23e+004"
cout<<setiosflags(ios::fixed)<<setprecision(3)<<12345.0<<endl;
//输出"1.23e+004"
return
0;
}