std :: dec仍然将内存地址输出为十六进制?

时间:2015-02-22 18:53:29

标签: c++

我有:

std::cout << "Start = " << std::dec << (&myObject) << std::endl;

以十进制输出地址。但是,地址仍以十六进制显示?

(我为10个成员中的每个成员输出其中一个,所以我不想将每个成员分配给变量,然后分别std::dec变量

1 个答案:

答案 0 :(得分:6)

hexdec操纵符用于整数,而不是指针。指针总是printf的{​​{1}}格式化程序在您的系统上使用的形式呈现(通常为十六进制表示法)。

这有助于强调指针和数字是不同的事实。您可能会认为这是一种罕见的情况,其中数字语义和数字表示在某种程度上是耦合的。

您可以做的最好的事情是在流式传输之前将指针投射到%p

uintptr_t

...但请考虑您是否需要这样做。