5

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

对于整数,有没有办法做到这一点?

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

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

4

2 回答 2

7

使用机械手:

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;
于 2010-02-24T15:28:30.230 回答
5

你也可以使用 boost::format 来做到这一点,我发现这通常可以节省输入:

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

它还允许一些不错的代码重用,如果您有多个地方需要进行相同的格式化:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;
于 2010-02-24T17:04:16.820 回答