**建议先看完上一篇(必看:你不知道的c++输出小知识_Sans的头的博客-CSDN博客)
好的,废话很多 ...
走起
众所周知,在c++中,有时输出的数据会变成这样:
Price
Pen:*********1.58
Pencle:******1.21
Erasers:*****1.1
Notebook:***5.65
Schoolbag:**30
.
.
.
这数据格式咋么样?能逼死一个强迫症吧。(强迫症:!!!!!!)
所以,我们需要调整一下格式。
1.打印末尾的0和小数点
#include <iostream>
using namespace std;
int main()
{
double pen,pencle,erasers,notebook,schoolbag;
cin>>pen>>pencle>>erasers>>notebook>>schoolbag;
cout.setf(ios_base::showpoint);
cout<<"Pen:\t\t"<<pen<<endl;
cout<<"Pencle:\t\t"<<pencle<<endl;
cout<<"Erasers:\t"<<erasers<<endl;
cout<<"Notebook:\t"<<notebook<<endl;
cout<<"Schoolbag:\t"<<schoolbag<<endl;
}
运行效果:
咋么样,过瘾吧,这样就舒服多了。
当然,这其中有人可能会有疑问:为哈setf()成员函数ios_base后要写'::'
Besause:
首先,'::'是作用域运算符,
那么,你肯定猜到了————showpoint是ios_base类声明中定义的类级静态常量。类级意味着如果在成员函数定义的外面使用它,必须在前面加'::'(这玩意儿)
当然,setf()的威力还不止如此。
setf()函数有两个原型:
第一个:fmtflags setf(fmtflags);
fmtflags格式常量:
常量 | 含义 |
ios_base::boolalpha | 输入和输出bool值,可以为true或者false |
ios_base::showbase | 对于输出,使用c++基数前缀(0,0x) |
ios_base::showpoint | 显示末尾的小数点 |
ios_base::uppercase | 对于16进制输出,使用大写字母,E表示法 |
ios_base::showpos | 在正数前面加上+ |
第二个:fmtflags setf(fmtflags,fmtflags);
第二个参数1:
ios_base::basefield
第一个参数有三个:
1.ios_base::dec 使用基数10
2.ios_base::oct 使用基数8
3.ios_base::hex 使用基数16
第二个参数2:
ios_base::floatfield
第一个参数有二个:
1.ios_base::fixed 使用定点计数法2.ios_base::scientific 使用科学技术法
第二个参数3:
ios_base::adjustfield
第一个参数有三个:
1.ios_base::left 使用左对齐
2.ios_base::right 使用右对齐
3.ios_base::internal 符号或基数前缀左对齐,值右对齐