Open In App
Related Articles

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

Improve Article
Improve
Save Article
Save
Like Article
Like

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
hexadecimal : 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.

CPP




// 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;
}


  • 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.

CPP




// 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;
}


  • 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: 

CPP




#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;
}


  • 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

CPP




// 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;
}


  • Output: 
xxxxxxxx77
GeeksGGGGG

Pattern using std::setw and std::fill

CPP




// 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;
    }
}


Output: 

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

If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@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.


Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Last Updated : 10 Nov, 2021
Like Article
Save Article
Similar Reads