Pointers 如何在VS 2008 C+中用消息框显示指针地址+;
我一直在尝试在messagebox中显示指针地址,需要您的经验。以下是此类工作的代码: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(只是猜测)
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是故意的。