📜  C++中的std :: setbase,std :: setw,std :: setfill

📅  最后修改于: 2021-05-30 04:22:05             🧑  作者: Mango

有用的输入/输出操纵器是std :: setbasestd :: setwstd :: setfill 。这些定义在并且是非常有用的功能。

  • std :: base :设置域标志;将基字段设置为其可能的值之一:根据参数base的dec,hex或oct。

    语法

    std::setbase (int base);
    decimal : if base is 10
    hexadcimal : if base is 16
    octal : if base is 8
    zero : if base is any other value.
    

    实现:此代码使用std :: setbase操纵器将十六进制设置为基本字段选择标志。

    // CPP Program to illustrate
    // std::setbase manipulator
    #include 
    #include  // std::setbase
      
    int main()
    {
        // set base to hexadecimal
        std::cout << std::setbase(16);
      
        // displaying 255 in hexadecimal
        std::cout << 255 << std::endl;
      
        // set base to Octal
        std::cout << std::setbase(8);
      
        // displaying 255 in Octal
        std::cout << 255 << std::endl;
        return 0;
    }
    

    输出:

    ff
    377
    
  • std :: setw :设置字段宽度;设置要在输出操作上使用的字段宽度。行为就像在操作员插入/提取其成员的流上用n作为参数调用成员宽度时一样(可以在输入流或输出流中插入/提取该成员宽度)。
    语法

    std::setw (int n);
    where n is Number of characters to 
    be used as field width.
    
    // CPP Program to illustrate
    // std::setw manipulator
    #include 
    #include  // std::setw
      
    int main()
    {
      
        // set width of 10
        std::cout << std::setw(10);
        std::cout << 100 << std::endl;
      
        std::string str = "GFG";
      
        // set width of 12
        std::cout << std::setw(12);
      
        std::cout << str << std::endl;
        return 0;
    }
    

    输出:

    100
             GFG
    
  • 注意:这里给setw()的参数是输出的最小宽度,因此,如果我们输出的宽度大于参数的值,那么输出宽度将不是给定setw()的参数,而是等于输出size(也就是说,输出不会被截断)。 setw()的默认宽度为0。

    例子:

    #include 
    #include
    #include
    using std::cout;
    using std::string;
    using std::endl;
      
    int main() {
        string temp="Hello setw";
        cout<

    输出:

    Hello setw
    

    std :: setfill :设置填充字符;将c设置为流的填充字符。行为就像在将c作为参数在其上插入为操纵器的流上调用c时一样填充成员(可以将其插入输出流中)。

    语法

    std::setfill (char_type c);
    char_type is the type of characters 
    used by the stream (i.e., its first class template 
    parameter, charT).
    

    实施方式

    // CPP Program to test std::setfill manipulator
    #include 
    #include  // std::setfill, std::setw
      
    int main()
    {
        // setfill is x and width is set as 10
        std::cout << std::setfill('x') << std::setw(10);
      
        std::cout << 77 << std::endl;
      
        std::string str = "Geeks";
      
        // setfill is G and width is set as 10
        // And std::left is used set str to left side
        std::cout << std::left << std::setfill('G') << std::setw(10);
      
        std::cout << str << std::endl;
        return 0;
    }
    

    输出:

    xxxxxxxx77
    GeeksGGGGG
    

使用std :: setw和std :: fill的模式

// CPP Program to print
// pattern using std::setw and std::fill
#include 
#include  // std::setfill, std::setw
  
int main()
{
    int n = 5;
    for (int i = 1; i <= n; i++) {
        std::cout << std::left << std::setfill(' ') << std::setw(n);
        std::cout << std::string(i, '*') << std::endl;
    }
}

输出:

*
**
***
****
*****
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”