是否有一种C ++方式使用iostream格式化地址和指针?

时间:2013-09-12 22:51:16

标签: c++ iostream

我有类似

的东西
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 ::运营商LT;&LT;为此超负荷?我可以用C正确地写这个,但我想知道是否有一个正确的方法来使用iostream。

1 个答案:

答案 0 :(得分: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