如何设置C ++数字格式到一定的精度?

时间:2010-02-24 15:25:55

标签: c++ integer hex number-formatting

据我所知,您可以使用iomanip为浮点数设置精度标记(例如,有2.00而不是2.00)。

对于整数,是否有可能做到这一点?

我想要一个十六进制数字显示为000e8a00,而不仅仅是e8a00或00000000而不是0。

这在C ++中是否可以使用标准库?

2 个答案:

答案 0 :(得分:8)

使用操纵者:

std::cout << std::setfill('0') << std::setw(8) << std::hex << 0 << std::endl;

没有操纵者:

std::cout.fill('0');
std::cout.width(8);
std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 42 << std::endl;

答案 1 :(得分:5)

您也可以使用boost :: format执行此操作,我发现这通常可以节省输入:

std::cout << boost::format("%08x\n") % 0xe8a00;

它还允许一些很好的代码重用,如果你有多个地方需要做同样的格式化:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;