MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
什么是正确的方式来输出ptr
到std::cerr
,这样我就可以登录它的价值?注意我不想写这个类,只是地址。
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
什么是正确的方式来输出ptr
到std::cerr
,这样我就可以登录它的价值?注意我不想写这个类,只是地址。
operator<<
超载采取const void*
,所以你可以简单地插入指针到流:
std::cerr << ptr;
唯一的例外是,如果指针是const char*
,它会被解释为指针C字符串。要打印的指针,你需要明确地将它转换为const void*
:
std::cerr << static_cast<const void*>(ptr);
这比'cerr << ptr << endl'好得多吗? – 2010-07-14 23:06:49
不是。只是另一种选择。 – 2010-07-14 23:10:02
在使用operator<<
的作品,你还可以使用<cstdio>
:
#include <cstdio>
...
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
fprintf(std::stderr, "Pointer address: %p", ptr);
除笨'::性病:: endl'这是一个很好的答案。你应该使用''\ n',而不是':: std :: cerr'。 – Omnifarious 2010-07-14 23:20:01
@Omnifarious:我只是完全删除它,因为它对于答案无关紧要。 – 2010-07-14 23:21:23
@Omnifarious,与endl的牛肉是什么?它是齐平的吗? – 2010-07-14 23:24:20