c++ - std::dec仍然将内存地址输出到十六进制?

标签 c++

我有:

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;

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

关于c++ - std::dec仍然将内存地址输出到十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61066696/

相关文章:

c# - C++ 17 中的 std::byte 是否等同于 C# 中的字节?

C++ 错误 : request for member 'view' in

c++ - 如何在 Qt Creator 中配置编译器?

类型为 "void(*)(int wall) is incompatible with parameter of type "int 的 C++ 参数”

c++ - 如何在JNI中将java异常作为jobobject抛出

C++。将 .dll 文件链接到项目

c++ - 关于C++类的几个问题

c++ - 2015 visual studio 中的二进制兼容性

c++ - 多个网格到单个波前 OBJ 文件

C++ 11 正则表达式