Padding stl strings in C++


Question

I'm using std::string and need to left pad them to a given width. What is the recommended way to do this in C++?

Sample input:

123

pad to 10 characters.

Sample output:

       123

(7 spaces in front of 123)

1
46
12/6/2017 4:04:37 PM

Accepted Answer

std::setw (setwidth) manipulator

std::cout << std::setw (10) << 77 << std::endl;

or

std::cout << std::setw (10) << "hi!" << std::endl;

outputs padded 77 and "hi!".

if you need result as string use instance of std::stringstream instead std::cout object.

ps: responsible header file <iomanip>

60
3/20/2009 6:07:04 PM

void padTo(std::string &str, const size_t num, const char paddingChar = ' ')
{
    if(num > str.size())
        str.insert(0, num - str.size(), paddingChar);
}

int main(int argc, char **argv)
{
    std::string str = "abcd";
    padTo(str, 10);
    return 0;
}

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon