如何将int字符串与消息框一起使用?

use*_*608 1 c++ winapi casting

我试图通过将一个int转换为const CHAR*来获取一个消息框来显示变量的地址,我目前的功能失调尝试看起来像这样:

#include <cstdlib>
#include <iostream>
#include <windows.h>

int main()
{
 int *ip;
 int pointervalue = 1337;
 int thatvalue = 1;
 ip = &pointervalue;
 thatvalue = (int)ip;
 std::cout<<thatvalue<<std::endl;
 MessageBox (NULL, (const char*)thatvalue, NULL, NULL);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

dos框打印2293616,消息框打印"9 |"

Cor*_*lks 5

如果您使用的是C++ 11,还可以使用to_string():

MessageBox (NULL, std::to_string(thatvalue).c_str(), NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

您当前的问题是,你只是铸造thatvalueconst char*,或者换句话说,取int值,并将其转换为一个指针,而不是一个字符串(C-风格或其他).你的消息框中会出现垃圾邮件,因为const char*指针指向无效的垃圾内存,这是一个不幸的奇迹,它不会崩溃.