std::setbase, std::setw , std::setfill in C++

The useful input/output manipulators are std::setbase, std::setw and std::setfill. These are defined in and are quite useful functions.

  • std::base : Set basefield flag; Sets the base-field to one of its possible values: dec, hex or oct according to argument base.

    Syntax :

    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.
    

    Implementation : This code uses the std::setbase manipulator to set hexadecimal as the base field selective flag.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // CPP Program to illustrate
    // std::setbase manipulator
    #include <iostream>
    #include <iomanip> // 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;
    }

    chevron_right

    
    

    Output:

    ff
    377
    
  • std::setw : Set field width; Sets the field width to be used on output operations. Behaves as if member width were called with n as argument on the stream on which it is inserted/extracted as a manipulator (it can be inserted/extracted on input streams or output streams).
    Syntax :

    std::setw (int n);
    where n is Number of characters to 
    be used as field width.
    
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // CPP Program to illustrate
    // std::setw manipulator
    #include <iostream>
    #include <iomanip> // 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;
    }

    chevron_right

    
    

    Output:

           100
             GFG
    
  • Note: Here argument given to setw() is minimum width of the output, so if we have output with more width than argument’s value then output width will not be exactly the argument given to setw() but will be equal to the output size(i.e., the output will not get truncated). Default width of setw() is 0.

    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #include <iostream>
    #include<iomanip>
    #include<string>
    using std::cout;
    using std::string;
    using std::endl;
      
    int main() {
        string temp="Hello setw";
        cout<<std::setw(5)<<temp<<endl;
        return 0;
    }

    chevron_right

    
    

    Output:

    Hello setw
    

    std::setfill : Set fill character; Sets c as the stream’s fill character. Behaves as if member fill were called with c as argument on the stream on which it is inserted as a manipulator (it can be inserted on output streams).

    Syntax :

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

    Implementation :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // CPP Program to test std::setfill manipulator
    #include <iostream>
    #include <iomanip> // 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;
    }

    chevron_right

    
    

    Output:

    xxxxxxxx77
    GeeksGGGGG
    

Pattern using std::setw and std::fill :

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP Program to print
// pattern using std::setw and std::fill
#include <iostream>
#include <iomanip> // 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;
    }
}

chevron_right


Output:

*
**
***
****
*****

This article is contributed by Shubham Rana. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : Aakash_Panchal