5

我有类似的东西

unsigned x = 16;
unsigned* p = &x;

std::cout << std::hex << std::setw(16) << std::setfill('0') << x << std::endl;
std::cout << std::hex << std::setw(16) << std::setfill('0') << p << std::endl;

输出:

0000000000000010
000x7fffc35ba784

ostream::operator<< 为此重载了吗?我可以用 C 正确地编写它,但我想知道是否有正确的方法可以用 iostream 来做到这一点。

4

1 回答 1

7

像这样使用internal

#include <iostream>
#include <iomanip>

int main()
{
    unsigned x = 16;
    unsigned* p = &x;

    std::cout << std::hex << std::setw(16) << std::setfill('0') << x << std::endl;
    std::cout << std::hex << std::setw(16) << std::setfill('0') << p << std::endl;
    std::cout << std::internal << std::hex << std::setw(16) << std::setfill('0') << p << std::endl;
}

这给出了:

0000000000000010
000x7fffd123c1a4
0x007fffd123c1a4
于 2013-09-12T22:58:23.130 回答