我有:
std::cout << "Start = " << std::dec << (&myObject) << std::endl;
以十进制输出地址。但是,地址仍以十六进制显示?
(我为10个成员中的每个成员输出其中一个,所以我不想将每个成员分配给变量,然后分别std::dec
变量
答案 0 :(得分:6)
hex
和dec
操纵符用于整数,而不是指针。指针总是以printf
的{{1}}格式化程序在您的系统上使用的形式呈现(通常为十六进制表示法)。
这有助于强调指针和数字是不同的事实。您可能会认为这是一种罕见的情况,其中数字语义和数字表示在某种程度上是耦合的。
您可以做的最好的事情是在流式传输之前将指针投射到%p
:
uintptr_t
...但请考虑您是否需要这样做。