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

Pointers 如何在VS 2008 C+中用消息框显示指针地址+;,pointers,formatting,c++-cli,string-formatting,messagebox,Pointers,Formatting,C++ Cli,String Formatting,Messagebox,我一直在尝试在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(只是猜测)

我一直在尝试在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显示指针的十六进制地址


谢谢你的帮助

> P>因为您使用C++,使用<代码> STD::OSTRIGSWATHON/CONT>:

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

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

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

像这样使用String::Format()称为复合格式,“X”格式提供十六进制格式。请使用调试器来代替编写这种代码。

它不完全是C++();HansPassant:即使是在C++/CLI支持.NET Framework的情况下,我发现STL的使用已经足够好了:)响应非常好。谢谢你的帮助!这太完美了!非常感谢。请注意,您应该使用
System::uintpttr
而不是
System::UInt64
(并根据
System::uintpttr::Size
选择X8或X16)。uintpttr也没有内置的格式支持。使用UInt64是故意的。