zoukankan      html  css  js  c++  java
  • 格式化输出[parts/iomanip]

    /*
    用ios类中的成员函数来进行IO格式的控制总需要写一条单独的语句,而不能直接嵌入到IO语句中,显得很不方便,因此C++又提供了一种用操作符来控制IO的格式。操作符分为带参和不带参两种,带参的定义在头文件iomanip中,不带参的定义在头文件iostream中

    首先看一下定义在头文件iostream中的不带参的流操作符
    boolalpha      使用文本形式输出bool型数值(即输出true或false)
    fixed          定点格式输出,即以小数点的形式表示浮点数
    scientific        用科学记数法表示浮点数
    dec            采用十进制,用于输入和输出
    oct          采用八进制,用于输入和输出
    hex            采用十六进制,用于输入和输出
    internal          输出格式为居中对齐
    right          输出格式为右对齐
    left            输出格式为左对齐
    showpos        在正数前面加上+号
    showpoint     显示末尾的0
    showbase      显示进制,即在十六进制数前添加0x,在八进制数前添加0
    uppercase     大写显示
    unitbuf       每次执行输出操作后均会清空缓冲区,如cout<<unitbuf<<"Test"<<"File";会刷新缓冲区两次
    skipws        忽略输入流中的空白字符,即当我们输入的字符前面有空格时,存储的时候会自动忽略
    以上15个即是标准控制符,它们可以自动调用setf()函数并提供正确的参数,因此可以直接使用

    noboolalpha
    noshowpos
    noshowpoint
    noshowbase
    nouppercase
    nounitbuf
    noskipws
    指示标志位ios::basefield、ios::adjustfield、ios::floatfield可以清除相应的8个标志位,剩下的7个标志位除了可以通过unsetf()清除,还可以通过以上7个命令清除相应标志位 

    ws 跳过输入的空格符,用于输入
    endl 输出一个换行符并刷新输出流,用于输出
    ends 输出一个空字符null,通常用来结束一个字符串,用于输出
    flush 刷新输出流,用于输出

    注:null和''的区别:''和null的值都是0,但''指的是空字符串,用于判断字符串结束;而null指的是空指针,用于判断指针指向的对象是否为空

    接下来看一下定义在头文件iomanip中的带参的流操作符
    setw(n)                   同ios类中的成员函数width(),设置字段宽度,用于输出
    setfill(c)                同ios类中的成员函数fill(),设置填充字符为c(默认为空格,一次有效),用于输出
    setprecision(n)          同ios类中的成员函数precision(),用于输出 
    setbase(n)            设置整数的基数为n(n可取0或10代表十进制,8代表八进制,16代表十六进制,默认为0),用于输入和输出
    setiosflags(fmtflag)     设置标志位,多个用"|"隔开,用于输入和输出
    resetiosflags(fmtflag)    清除指定标志位,多个用"|"隔开,用于输入和输出 

    */

    #include <iostream>
    using namespace std;
    int main()
    {
      int x;
      cin>>hex>>x;          //采用十六进制进行输入(16)
      cout<<x<<endl;        //默认采用十进制进行输出(22) 
      cin>>x;             //由于前面的cin>>hex会自动调用setf(ios::hex),而setf()会一直生效,因此这里仍采用十六进制进行输入(16) 
      cout<<x<<endl;         //默认采用十进制进行输出(22)
      cin>>oct>>x;         //这里会自动调用setf(ios::oct|ios::basefield),采用八进制进行输入(16) 
      cout<<x<<endl;       //默认采用十进制进行输出(14)
    
      cout<<'a';
      cout<<'b'<<ends;    //ends用于输出一个空字符null
      cout<<'c'<<endl;    //endl用于输出一个换行符,并刷新输出流(ab c) 
    
      bool b=123;
      cout<<boolalpha<<b<<endl;     //true
      cout<<noboolalpha<<b<<endl;   //1
    
      return 0;
    }
  • 相关阅读:
    利用Azure Backup备份和恢复虚拟机(2)
    不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进
    Vi命令
    Vi三种模式详解
    C#从Excel中读取数据为空
    Visual Studio 2012/2010/2008 远程调试
    Beyond Compare 3 设置自动换行
    Text类型的字段进行数据替换
    SQLite 连接两个字符串
    基于虚拟日志压缩的数据同步方案
  • 原文地址:https://www.cnblogs.com/kevinq/p/4491851.html
Copyright © 2011-2022 走看看