您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

C++域宽设置―让输出更规范

时间:01-10来源:作者:点击数:

看了程序5.3.1的运行结果,你可能会觉得输出的数字不太整齐。第一行的一位数都挤在了一起,而第二行开始的两位数都是整整齐齐的。那么,我们有什么办法让他们排排整齐么?大家自然就先想到空格了。不过如果为了个这么简单的功能,还要去编写一段判断一下这个数是几位的,要加几个空格之类代码就有点麻烦了。其实C++早已经为我们准备好了更方便的方法。这种方法就是设置域宽。

所谓域宽,就是输出的内容(数值或字符等等)需要占据多少个字符的位置,如果位置有空余则会自动补足。比如我们要设置域宽为2,那么当输出一位数1的时候输出的就是“ 1”,即在1前面加了一个空格。空格和数字1正好一共占用了两个字符的位置。

那有些时候我们不想在1前面补上空格,而是希望1前面补上0可不可以?当然也是可以的。我们可以设置填充字符,如果我们把0设置为填充字符,那么1前面就变成0了。

设置域宽的具体语法格式为:
    cout <<setw(int n) <<被设置的输出内容1 [<<setw(int m) <<被设置的输出内容2 …];

设置填充字符的具体语法格式为:
    cout <<setfill(char n) <<被设置的输出内容 [<<setfill(char m) <<被设置的输出内容12 …];

我们在设置域宽和填充字符的时候要注意几点:

  1. 设置域宽的时候应该填入整数,设置填充字符的时候应该填入字符。
  2. 我们可以对一个要输出的内容同时设置域宽和填充字符,但是设置好的属性仅对下一个输出的内容有效,对以后输出要再次设置。即cout <<setw(2) <<a <<b;语句中域宽设置仅对a有效,对b无效。
  3. setw和setfill被称为输出控制符,使用时需要在程序开头写上#include "iomanip.h",否则无法使用。

下面我们来看一段有关输出图形的循环嵌套程序:(程序5.3.2)

#include "iostream.h"
#include "iomanip.h"
int main()
{
   int a,b;
   cout <<"请输入长方形的长和宽:" <<endl;
   cin >>a >>b;
   for (int i=1;i<=b;i++)//控制长方形的宽度
   {
      for (int j=1;j<=a;j++)//控制长方形的长度
      {
         cout <<setw(2) <<'*';
      }
      cout <<endl;
   }
   return 0;
}

运行结果:
请输入长方形的长和宽:
5 3↙
* * * * *
* * * * *
* * * * *

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门