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

标签 c++

我有:

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

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

(我正在为 10 个成员中的每一个输出其中一个,所以我不想将每个成员分配给一个变量,然后分别为 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/28661862/

相关文章:

C++ 库编译但不像以前的版本那样工作

c++ - Qt 5.3 QPlainTextEdit 改变QTextCursor颜色

c++ - 为什么要发明 wchar_t?

c++ - 我可以使用 std::stop_source 延迟取消工作线程中的所有工作线程吗?

C++/带有对象指针 vector 的多个文件

c++ - 原子的类内初始化

c++ - 内部类的任何解决方案或编程技巧?

c++ - 隐藏的移动构造

c++ - 为什么我的函数无限循环

c++ - ACE 互斥体如何工作以及为什么 ACE 线程互斥体的工作方式不同?