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



我有:

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

以十进制形式输出地址。然而,地址仍然是十六进制的??

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

hexdec操纵器用于整数,而不是指针。指针总是以printf%p格式化程序在系统上使用的形式(通常是十六进制表示法)呈现。

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

你能做的最好的事情是在流式传输之前将指针投射到uintptr_t

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

…但请考虑您是否真的需要这样做。

最新更新