C++的格式化输出控制

在我们使用c++的输入输出流时,往往采用的是默认的输出格式,但有时候我们并不希望按这样的方式输出,需要按自己的要求控制输出格式。下面的控制符或者格式标志可以帮助我们按照相应的格式输出。

控制符和格式标志

(我从各处搜集了相应的控制符和格式标志)

表1 输入输出流的控制符(部分控制符需要iomanip头文件)
控制符作 用
dec设置数值的基数为10
hex设置数值的基数为16
oct设置数值的基数为8
setfill(ch)设置填充字符ch,ch可以是字符常量或字符变量
setprecision(n)设置浮点数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位数)形式和 scientific(指数)
setw(n)设置字段宽度为n位
setiosflags( ios::fixed)设置浮点数以固定的小数位数显示
setiosftags( ios::scientific)设置浮点数以科学记数法(即指数形式)显示
setiosflags( ios::left)输出数据左对齐
setiosflags( ios::right)输出数据右对齐
setiosflags( ios::skipws)忽略前导的空格
setiosflags( ios::uppercase)数据以十六进制形式输出时字母以大写表示
setiosflags( ios::lowercase)数据以十六进制形式输出时宇母以小写表示
setiosflags(ios::showpos)输出正数时给出“+”号
表2 设置格式状态的格式标志
格式标志作用
ios::left输出数据在本域宽范围内向左对齐
ios::right输出数据在本域宽范围内向右对齐
ios::internal数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充
ios::dec设置整数的基数为10
ios::oct设置整数的基数为8
ios::hex设置整数的基数为16
ios::showbase强制输出整数的基数(八进制数以0打头,十六进制数以0x打头)
ios::showpoint强制输出浮点数的小点和尾数0
ios::uppercase在以科学记数法格式E和以十六进制输出字母时以大写表示
ios::showpos对正数显示“+”号
ios::scientific浮点数以科学记数法格式输出
ios::fixed浮点数以定点格式(小数形式)输出
ios::unitbuf每次输出之后刷新所有的流
ios::stdio每次输出之后清除stdout, stderr
表3 设置输出格式的流操作子(需要包含iomanip头文件)
操作符含义
setfill(ch)用ch填充空白字符
setprecision(n)将浮点精度设置为n
setw(n)按照n个字符来读或者写
setbase(b)以b为进制基数输出整数值

使用实例

cout<<"dec:"<<dec<<a<<endl; 				//以十进制形式输出整数
cout<<"hex:"<<hex<<a<<endl; 				//以十六进制形式输出整数a
cout<<"oct:"<<setbase(8)<<a<<endl; 			//以八进制形式输出整数a
cout<<setw(10)<<pt<<endl; 					//指定域宽为,输出字符串
cout<<setfill('\*')<<setw(10)<<pt<<endl; 	//指定域宽,输出字符串,空白处以'\*'填充
cout<<"pi="<<setprecision(4)<<pi<<endl; 	//改为4位小数
cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl; //改为小数形式输出
    cout << setiosflags(ios::left);                             //设置左对齐
    cout << setfill('_') << setw(40)<< "_" << setfill(' ') << endl//设置输出宽度和填充字符
         << "|" << setw(38) << "Store" << "|" << endl               //设置输出宽度和填充字符
         << "|" << setw(38) << setfill('*') << "*" << setfill(' ') << '|' << endl//设置输出宽度和填充字符
         << "|      XiaoFang Convenience Store      |" << endl                      
         << "|" << setw(38) << setfill('*') << "*" << setfill(' ') << '|' << endl;//设置输出宽度和填充字符
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值