setfill、setw 和 setprecision

使用 setfill、setw 和 setprecision 操作器,这些操作器带有参数,并在头文件 iomanip.h 中定义。因此,此头文件必须包括在程序中。
#include<iostream.h>
#include <iomanip.h>
#include<conio.h>
void main()
{
  int amt1 = 100, amt2 = 12345;
  float f1 = 10.0/3.0;
  cout<<setfill('*');
  cout<<"Amount 1:[";
  cout<<setw(5)<<amt1<<"]\n";
  cout<<"Amount 2:[";
  cout<<setw(4)<<amt2<<"]\n";
  cout<<"Default f1 = ["<<f1<<"]\n";
  cout<<setprecision(2)<<"f1 = ["<<f1<<"]\n";
}
输出:
Amount 1:[**100]
Amount 2:[12345]
Default f1 = [3.33333]
f1 = [3.3]
您可看到,上面的输出与使用 width、fill 和 precision 操作器的程序的输出是相同的。
附:setw()设置域宽
就是你的输出要占多少个字符
比如:
cout<<setw(5)<<12345<<endl;
就输出
12345
cout<<setw(6)<<12345<<endl;
输出
空格+12345
 
(1)setw(int n) 预设输出宽度
如:cout<<setw(6)<<123<<endl;
输出结果为“   123”,在123的前面会有3个空格,123右对齐。
 
(2)setfill(char c) 预设填充字符
如:cout<<setfill(‘#’)<<123<<endl;
输出显示结果为“###123”,123右对齐,在前面填充3个’#’ 。
 
(3)setbase(int n) 预设整数输出进制
如:cout<<setbase(8)<<255<<endl;
输出显示结果为377
 
(4)setprecision(int n) 用于控制输出流显示浮点数的精度,整数n代表显示的浮点数数字的个数。示例程序如下:
 
#include <iostream.h>
#include <iomanip.h> //格式控制
 
void main()
{
    double amount = 22.0/7;
    cout <<amount <<endl; //(1)
    cout <<setprecision(0) <<amount <<endl   //(2)
       <<setprecision(1) <<amount <<endl     //(3)
       <<setprecision(2) <<amount <<endl     //(4)
       <<setprecision(3) <<amount <<endl     //(5)
       <<setprecision(4) <<amount <<endl;    //(6)
   
    cout <<setiosflags(ios::fixed);
    cout <<setprecision(8) <<amount <<endl; //(7)
    cout <<setiosflags(ios::scientific)<<amount<<endl; //(8)   
    cout <<setprecision(6);
}
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。 第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。 第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8。在用指数形式输出时,setprecision(n)表示小数位数。 (可是这个指数形式的输出我用VC6没有运行出来)。
setw(int _w)讲解
<< setw(int _w) << 输出位宽
如<< setw(7) << 1000   输出结果为 "1000   "(紧跟三个空格)
而如<< setw(3) << 1000 位宽小于原来的数字的位宽 那么按照原来的格式输出"1000" 前后无空格

setfill() 讲解
setfill(int _m) 随setw(int _w)一起使用 意思是在set(int _w)设定后的空格填充指定的字符
注意setfill里边的参数是int _m 是个整数 所以 如果我们要用空格来填充*号的时候
要使用setfill('*')[字符] 而不是setfill(*)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值