2017-09-15 24 views
-3
int a; 
std::cout<<"Enter hour: "; 
std::cin>>a; 
std::cout<< a; 

这仅用于提问的目的。没有使用函数输出01而不是1的技巧吗?假设如果输入的是9我想09是一个输出,但如果“一”是2位,没有必要加0在不使用函数的情况下在C++中将1转换为01

+6

'性病::法院<< '0' <<一个;' –

+1

无论做什么@WilliamPursell说,或者用东西'' Charles

+0

你必须进一步描述您的问题。例如,如果“a = 10”或“100”会发生什么?这是十进制,二进制,十六进制还是什么等等。 –

回答

4

我想你想:

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

这将字段宽度设置为2,填充字符设置为'0'。但请记住,尽管在输出a后字段宽度已重置,但填充不是。所以如果这是暂时的,请务必在设置之前保存填充。

+0

有什么办法可以不使用预定义的函数吗? – Bibek

+3

不,因为'operator <<'是一个预定义的函数。 – md5i

0

可能:

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

您可以使用精美的Boost.Format库以printf-like语法格式化输出。

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

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