'Convert 1 to 01 in C++ without using function

int a;
std::cout<<"Enter hour: ";
std::cin>>a;
std::cout<< a;

This is just for question purpose. Is there any trick to output 01 instead of 1 without using a function? Suppose if the input is 9 I want 09 to be an output but if the 'a' is 2 digit there is no need to add 0.

c++


Solution 1:[1]

I think you want:

std::cout << std::setw(2) << std::setfill('0') << a;

This sets the field width to 2 and the fill character to '0'. Keep in mind, however, that although the field width is reset after outputting a, the fill is not. So if this is temporary, be sure to save the fill before setting it.

BTW these function are in "iomanip" library

Solution 2:[2]

You could use the fine Boost.Format library to format the output with printf-like syntax.

#include <boost/format.hpp>
#include <iostream>

int main()
{
    std::cout << boost::format("%02d") % 1 << '\n';
}

Solution 3:[3]

maybe:

std::cout << ((a <= 9) ? 0 : "") << a;

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2 Henri Menke
Solution 3