C++格式化显示整形数字?
cout中类似C中的
printf( "%08d ",i)
printf( "%0*d ",10,i)
printf( "%8x ",i)
这样的格式化输出? 查了半天没有查到
setw只能对字符串有用.
[解决办法]
1.%08d输出8位10进制数i,不足8位前面补0;%8d是补空格。
2.输出10位10进制数i,不足10位前面补0。
3.输出8位16进制数i,不足8位前面补0。
[解决办法]
try:
sprintf
[解决办法]
谁说setw只对字符串有效了。对所有类型都有效。
不过,你得联用setfill等其它控制符。C++的控制符,每个只有一个功效。
有兴趣找 <标准C++输入输出流与本地化> 来看
[解决办法]
如果可以考虑标准库以外的选择的话,那么可以用boost::format:
format( "...%8d... ") % x; //还有其他用法包括{0}
功能是printf的超集。但是强类型的,比printf安全得多。如果能不用printf就不用,因为它是弱类型的。
相比cout,format更灵活,效率更高。
将来,随着C++09的推出,将会有类型安全的printf。相关的支持技术——可变模板,已经进入标准草案。