函数setw()被包含在头文件<iomanip>中,通常被用于控制输出的格式。
#include<iostream> #include<iomanip> #include<cstdio> using namespace std; int main() { //freopen("result.txt","w",stdout); int a=615; char b='M' ; float c=136.8789; cout<<a<<b<<c<<' '; cout<<setw(10)<<a<<setw(8)<<b<<setw(16)<<c<<' '; cout<<setw(12)<<a<<b<<c<<' '; return 0; }
以上代码的输出结果为:
615M136.879 615 M 136.879 615M136.879
我们把输出结果导入到Notepad++中,不难发现setw()的作用:
对于语句 cout<<setw(int n)<<a; 表示输出“ a”,这个输出串的长度为n,长度不够的在前面用空格补足。需要注意的是,这个长度包含了a本身。而若a本身的长度已经达到或超过n,则按照a本身的长度输出,前面自然就不补充空格了。
此外,根据代码 cout<<setw(12)<<a<<b<c<<' '; 的输出结果,我们会发现,这个语句中的setw(12)只能控制a的输出格式,也就是说,在这一行前面的空格数,仅仅是根据a的长度来决定的,而与b、c无关。
<一点点补充> 我们可以通过setfill()来控制在前面补足的内容,例如语句 cout<<setfill('~')<<setw(n)<<a; 那么在a前用来补足长度n的就不再是空格,而是‘~’。