• iomanip


    setw控制符只对后面紧跟的起作用,而setfill控制符一旦设定,就会对后面一直起作用,直到你重新设置。 
    我给你举个例子,看下面这段程序:
    #include <iostream>
    using namespace std;
    #include <iomanip>
    int main()
    {
    cout<<setw(8)<<setfill('*')<<123<<endl;
    cout<<setw(8)<<456<<endl;
    return 0;
    }
    输出结果是:
    *****123
    *****456

    如果只想填满紧跟后面的,必须重新设置:
    #include <iostream>
    using namespace std;
    #include <iomanip>
    int main()
    {
    cout<<setw(8)<<setfill('*')<<123<<endl;
    cout<<setw(8)<<setfill(' ')<<456<<endl;
    return 0;
    }
    注意:重新设置的填充符是空格
    这样运行结果是:
    *****123
    空格456
    (由于百度知道不允许每行开头有空格,所以我打上两个汉字,实际运行的时候是五个空格加上456)
    就达到你的要求了。
    关于控制符的作用范围,你可以多查阅一些相关资料,也要自己多试验,这样才能掌握的牢固。

    使用 setfillsetw 和 setprecision 操作器,这些操作器带有参数,并在头文件 iomanip.h 中定义。因此,此头文件必须包括在程序中。

    #include<iostream.h> 
    #include <iomanip.h> 
    #include<conio.h> 
    void main() 
    {

      int amt1 = 100, amt2 = 12345; 
      float f1 = 10.0/3.0; 
      cout<<setfill('*'); 
      cout<<"Amount 1:["; 
      cout<<setw(5)<<amt1<<"]\n"; 
      cout<<"Amount 2:["; 
      cout<<setw(4)<<amt2<<"]\n"; 
      cout<<"Default f1 = ["<<f1<<"]\n"; 
      cout<<setprecision(2)<<"f1 = ["<<f1<<"]\n";

    }

    输出:

    Amount 1:[**100] 
    Amount 2:[12345] 
    Default f1 = [3.33333] 
    f1 = [3.3]

    您可看到,上面的输出与使用 widthfill 和 precision 操作器的程序的输出是相同的。 
    附:setw()设置域宽 
    就是你的输出要占多少个字符 
    比如: 
    cout<<setw(5)<<12345<<endl; 
    就输出 
    12345 
    cout<<setw(6)<<12345<<endl; 
    输出 
    空格+12345

     setfill()只能接受一个字符形参,不能接受字符串形参

  • 相关阅读:
    深入了解JVM-方法区
    Mysql性能调优
    基督教 犹太  新教  东正教 天主教
    caffe的matlab接口一览表
    ubuntu下 编译Caffe的Matlab接口
    Linux入门学习教程:虚拟机体验之KVM篇
    利用proxychains在终端使用socks5代理
    process lasso 优化原理
    解决win7和ubuntu双系统ubuntu不能上网的问题
    调试minix内核
  • 原文地址:https://www.cnblogs.com/herizai/p/3081369.html
Copyright © 2020-2023  润新知