我们首先要知道,填充符是默认为空格的,如果你只是单纯需要队列整齐,那么setfill是用不着,不过一旦要加入其他符号,那么就要设置填充符了。
setw跟setfill都是要用到头文件<iomanip>,那么接下来先介绍简单的setw用法。
一、setw函数
一般的使用格式是:cout<<setw(n)<<i<<endl;
先举个简单的例子:我们分别要输出1~10的本身及其平方
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
for(int i=1;i<=10;i++)
cout<<setw(4)<<i<<setw(4)<<i*i<<endl;
return 0;
}
二、setfill函数
开头说过,setfill是在想要填充的不是空格时,才要用的,这个也很简单
比如说我们想要填充‘*’,那么就这么写:cout<<setfill('*')<<setw(4)<<输出的数<<endl
值得一提的是,如果你接下来又要需要空格填充时,还得再重置:cout<<setfill(' ')<<endl
那么检验一下学习成果吧
题目要求:格式化输出乘法口诀表(如下图)
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int colwidth(4);
int max(10);
cout << setw(colwidth) << '*' << '|';
for (int i = 1; i <= max; i++)
cout << setw(colwidth) << i;
cout << endl;
//打印表头
cout << setfill('-') << setw(colwidth) << "" << '+'
<< setw(max * colwidth) << "" << endl;
//设置填充符
cout << setfill(' ');
//重置填充符
for (int i = 1; i <= 10; i++) {
cout << setw(colwidth) << i << '|';
for (int j = 1; j <= i; j++)
cout << setw(colwidth) << j*i;
cout << endl;
}
//打印每一行
system("pause");
return 0;
}
那么有的好兄弟又会挑茬了,要是我想填充在右边呢?
那么好,只需要加入一个left,系统输出结果就会自动左对齐,填充在右边
cout<<left<<setw( )<<输出数字<<endl;
如下图