[College] 关于setw()

函数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<<'\n';
    cout<<setw(10)<<a<<setw(8)<<b<<setw(16)<<c<<'\n';
    cout<<setw(12)<<a<<b<<c<<'\n';
    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<<'\n'; 的输出结果,我们会发现,这个语句中的setw(12)只能控制a的输出格式,也就是说,在这一行前面的空格数,仅仅是根据a的长度来决定的,而与b、c无关

<一点点补充> 我们可以通过setfill()来控制在前面补足的内容,例如语句 cout<<setfill('~')<<setw(n)<<a; 那么在a前用来补足长度n的就不再是空格,而是‘~’。

posted @ 2019-10-09 08:00  SinGuLaRiTy2001  阅读(342)  评论(0编辑  收藏  举报