我有类似的东西
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.
使用 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