Дано:Как написать указатель на std :: cerr?
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
Что такое правильный способ вывода ptr
к std::cerr
, так что я могу войти его значение? Примечание. Я не хочу писать класс, просто адрес.
Дано:Как написать указатель на 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);
Вы можете использовать boost format для Printf как форматирование:
std::cerr << format("%p", ptr) << endl;
%p
форматы указатель - должен быть переносимым между x86 и x64.
Как это лучше, чем 'cerr << ptr << endl'? –
Это не так. Еще один вариант. –
При использовании operator<<
работы, вы можете также использовать <cstdio>
:
#include <cstdio>
...
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
fprintf(std::stderr, "Pointer address: %p", ptr);
для глупой ':: Std Кроме :: endl' это отличный ответ. Вместо этого вы должны использовать '' \ n'', особенно для ':: std :: cerr'. – Omnifarious
@Omnifarious: Я просто удалил его, так как это не важно для ответа в любом случае. –
@ Omnifarious, какая говядина с endl? Это флеш? –