stdsetiosflags

當在表示式 out << setiosflags(mask)in >> setiosflags(mask) 中使用時,將流的所有格式標誌設定為由掩碼指定的輸出或輸入。

所有 std::ios_base::fmtflags 的列表:

  • dec - 對整數 I / O 使用十進位制基數
  • oct - 對整數 I / O 使用八進位制基數
  • hex - 對整數 I / O 使用十六進位制基數
  • basefield - dec|oct|hex|0 對掩碼操作很有用
  • left - 左調整(在右邊新增填充字元)
  • right - 右調整(在左側新增填充字元)
  • internal - 內部調整(將填充字元新增到內部指定點)
  • adjustfield - left|right|internal。對掩碼操作很有用
  • scientific - 使用科學記數法生成浮點型別,或者如果與固定符號結合使用十六進位制表示法
  • fixed - 使用固定表示法生成浮點型別,如果與科學結合使用,則生成十六進位制表示法
  • floatfield - scientific|fixed|(scientific|fixed)|0。對掩碼操作很有用
  • boolalpha - 以字母數字格式插入和提取 bool 型別
  • showbase - 生成一個字首,指示整數輸出的數字基數,需要貨幣 I / O 中的貨幣指標
  • showpoint - 無條件地為浮點數輸出生成小數點字元
  • showpos - 為非負數字輸出生成+字元
  • skipws - 在某些輸入操作之前跳過前導空格
  • unitbuf 在每次輸出操作後重新整理輸出
  • uppercase - 在某些輸出輸出操作中將某些小寫字母替換為大寫字母

操作器示例:

    #include <iostream>
    #include <string>
    #include<iomanip>
    int main()
    {
      int l_iTemp = 47;
      std::cout<<  std::resetiosflags(std::ios_base::basefield);
      std::cout<<std::setiosflags( std::ios_base::oct)<<l_iTemp<<std::endl;
      //output: 57
      std::cout<<  std::resetiosflags(std::ios_base::basefield);
      std::cout<<std::setiosflags( std::ios_base::hex)<<l_iTemp<<std::endl;
      //output: 2f
      std::cout<<std::setiosflags( std::ios_base::uppercase)<<l_iTemp<<std::endl;
      //output 2F
      std::cout<<std::setfill('0')<<std::setw(12);
      std::cout<<std::resetiosflags(std::ios_base::uppercase);
      std::cout<<std::setiosflags( std::ios_base::right)<<l_iTemp<<std::endl;
      //output: 00000000002f
      
      std::cout<<std::resetiosflags(std::ios_base::basefield|std::ios_base::adjustfield);
      std::cout<<std::setfill('.')<<std::setw(10);
      std::cout<<std::setiosflags( std::ios_base::left)<<l_iTemp<<std::endl;
      //output: 47........
      
      std::cout<<std::resetiosflags(std::ios_base::adjustfield)<<std::setfill('#');
      std::cout<<std::setiosflags(std::ios_base::internal|std::ios_base::showpos);
      std::cout<<std::setw(10)<<l_iTemp<<std::endl;
      //output +#######47
      
      double l_dTemp = -1.2;
      double pi = 3.14159265359;
      std::cout<<pi<<"    "<<l_dTemp<<std::endl;
      //output +3.14159   -1.2
      std::cout<<std::setiosflags(std::ios_base::showpoint)<<l_dTemp<<std::endl;
      //output -1.20000
      std::cout<<setiosflags(std::ios_base::scientific)<<pi<<std::endl;
      //output: +3.141593e+00
      std::cout<<std::resetiosflags(std::ios_base::floatfield);
      std::cout<<setiosflags(std::ios_base::fixed)<<pi<<std::endl;
      //output: +3.141593
      bool b = true;
      std::cout<<std::setiosflags(std::ios_base::unitbuf|std::ios_base::boolalpha)<<b;
      //output: true
      return 0;
    }