如何在VS 2008 C ++中使用消息框显示指针地址

时间:2013-09-21 17:25:35

标签: pointers formatting c++-cli string-formatting messagebox

我一直在尝试在消息框中显示指针地址,需要您的经验。这是有用的代码:

int MyVar;
int *PMyVar;
MyVar = 5;
PMyVar = &MyVar;
MessageBox::Show("value of MyVar: \n " + Convert::ToString(&PMyVar), "Pointer value");

正在运行的程序显示:

value of MyVar:
True

我试图显示指针的地址,例如0xfc00(只是猜测)而不是True。如何用MessageBox显示指针的十六进制地址?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

由于您使用的是C ++,请使用std::ostringstream

int MyVar = 5;
int *PMyVar = &MyVar;
std::ostringstream oss;
oss << "address of PMyVar: " << &PMyVar;
MessageBox::Show(oss.str().c_str(), "Pointer value");

并且不要忘记#include <sstream>

答案 1 :(得分:1)

&amp; PMyVar的类型是int**,Convert :: ToString()没有接受指针类型的重载。您必须将其强制转换为支持的类型。指针值可以是4或8个字节,因此最佳选择是UInt64:

  String^ str = String::Format("{0:X8}", (UInt64)&PMyVar);
  MessageBox:Show(str);

使用String :: Format()这样称为复合格式,“X”格式提供格式为十六进制。支持使用调试器而不是编写这种代码。