setw()
今天在学习C++中碰到一个setw()函数,不知道是什么意思,上网查阅资料得知:
setw(int n)函数是C++中在输出操作中使用的字段宽度设置,此函数的作用是:设置输出的域宽,n表示字段宽度。它只对紧接着的输出有效,紧接着的输出结束后又变回默认的域宽。当后面紧跟着的输出字段长度小于n的时候,在该字段前面用空格补齐;当输出字段长度大于n时,全部整体输出。
setw(int n)函数包含在头文件为#include <iomanip>中,其中io代表输入输出,manip是manipulator(操纵器)的缩写iomanip的作用:主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样。代码如下:
#include <iostream>
using namespace std;
#include <iomanip>
using std::setw;
int main()
{
cout << 123456789 << endl;
cout << setw(4) << 123 << setw(7) << 456789 << endl;
return 0;
}
如果我们上面的代码稍作修改,
cout << setw(4) << 123 << setw(7) << 456789 << endl;
改为:
cout << setw(4) << 123 << setw(3) << 456789 << endl;
修改后的代码如下:
#include <iostream>
using namespace std;
#include <iomanip>
using std::setw;
int main()
{
cout << 123456789 << endl;
cout << setw(4) << 123 << setw(3) << 456789 << endl;
return 0;
}
我们发现,123我们设置的长度为4,123本身长度为3,所以在123之前补一个空格来填满长度4.之后的456789本身长度是6,设置的长度为3,所以只要把456789本身全部输出就OK了。
感谢原文链接:https://blog.csdn.net/weixin_40379143/article/details/107999889
left and right
left和right控制后面符号的位置,left使其靠左,right使其后右。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
cout << setfill('*') << left << 'a' << setw(3) << 'b' << endl;
cout << setfill('*')<<right << 'a' << setw(3) << 'b' << endl;
cout << setfill('*') << 'a' << left << setw(3) << 'b' << endl;
cout << setfill('*') << 'a' << right << setw(3) << 'b' << endl;
system("pause");
return 0;
}
解释:使用setw()函数要用#include<iomanip> setw()函数会设置其后面字符的位置空间大小,如setw(3) 会设置其宽度为3个字节
第一行:设置填充符号为'*' 设置为左对齐,因为字符‘a’就占一个字节所以就直接输出了,然后字符‘b’,设置字符宽度为3个字节,且前面设置为左对齐,所以会将设置3个字节的位置输出b**
第二行:设置填充符号为'*' 设置为右对齐,因为字符‘a’就占一个字节所以就直接输出了,然后字符‘b’,设置字符宽度为3个字节,且前面设置为右对齐,所以会将设置3个字节的位置输出**b
第三行:设置填充符号为'*' 因为字符‘a’就占一个字节所以就直接输出了,设置为左对齐,然后设置字符'b'宽度为3个字节,且前面设置为左对齐,所以会将设置3个字节的位置输出b**
第四行:设置填充符号为'*' 因为字符‘a’就占一个字节所以就直接输出了,设置为右对齐,然后设置字符'b'宽度为3个字节,且前面设置为右对齐,所以会将设置3个字节的位置输出**b
原文链接:https://blog.csdn.net/weixin_71272801/article/details/132657214