如何编写指向 std::cerr 的指针?
给定:
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
将 ptr
输出到 std::cerr
的正确方法是什么,以便我可以记录其值?注意我不想写类,只想写地址。
Given:
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
What is the correct way to output ptr
to std::cerr
, so I can log its value? Note I don't want to write the class, just the address.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
operator<<
被重载以获取const void*
,因此您可以简单地将指针插入到流中:例外情况是,如果指针是
const char*
,它将被解释为指向 C 字符串的指针。要打印指针,您需要将其显式转换为 const void*:operator<<
is overloaded to take aconst void*
, so you can simply insert the pointer into the stream:The exception is that if the pointer is a
const char*
, it will be interpreted as a pointer to a C string. To print the pointer, you need to cast it explicitly to aconst void*
:您可以利用 printf 的 boost 格式格式化:
%p
格式化指针 - 应该可以在 x86 和 x64 之间移植。You can leverage boost format for printf like formatting:
%p
formats pointer - should be portable between x86 and x64.在使用
operator<<
有效时,您还可以使用
:While using
operator<<
works, you could also use<cstdio>
: