c++ 输出格式控制与C语言对照
cout 的种种
1 头文件
iostream 就不用说了,重要的是iomanip(io 的manipulate)
1. 整型 输出进制(默认十进制)
八进制,十进制,十六进制
//八进制.....
int a;
cin>>oct>>a;
cout<<oct<<a;
//效果等同
printf("%o",a);
//十六进制
cin>>hex>>a;
cout<<hex<<a;
scanf("%x",&a);
printf("%x",a);
cout<<dec;//默认的都是全局设置,所以最好在每次输出之后设为默认
2 格式控制
左对齐,右对齐
setiosflag(ios:: left),setiosflag(ios:: right);//默认右对齐,全局设置
cout<<setw(10)<<setiosflags(ios::left)<<a<<endl;
固定输出小数位数,setiosflag(ios::fixed)与setprecision(n)连用.全局设置
cout<<setiosflags(ios::fixed)<<setprecision(5)<<a<<endl;
// 相当于
printf("%.5f\n",a);
按指定位数输出
#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
int main(void)
{
for(int i = 0;i < 5; ++i)
printf("%.*f\n",i,pi);
for(int i = 0;i < 5; ++i)
cout<<setiosflags(ios::fixed)<<setprecision(i)<<pi<<endl;
return 0;
}
输出
3
3.1
3.14
3.142
3.1416
3
3.1
3.14
3.142
3.1416
3. 控制输出长度,有效位数,填充字符
控制输出长度 setw() w是(width),这个只作用一次,如果输出的字段大于给定的长度,不起作用
有效位数 setprecision(), 这个是全局的,默认是六位//对浮点数作用
填充字符 在setw() 中如果位数不够,用这个设定的字符来补充,默认是空格
使用方法
int a = 100;
cout<<setw(10)<<a<<endl;//控制输出的长度,这个
cout<<setfill('*')<<setw(10)<<a<<endl;
cout<<seprecison(2)<<a<<endl;
更多请查表
表格