2010-11-24 69 views
1

我有一个指针,我想将指针地址转换为一个字符串,并在消息框中显示地址。有没有可以格式化字符串的函数printf()?这似乎并不奏效。格式字符串C++

#include <windows.h> 
#include <stdio.h> 

int WINAPI WinMain(
    HINSTANCE hThisInstance, 
    HINSTANCE prevInstance, 
    LPSTR lpszArgument, 
    int nFunsterStil) 
{ 
    int x = 5; 
    int* ptr = &x; 

    MessageBox(NULL, printf("%p", ptr), "Pointer", MB_OK); 
    return 0;  
} 

感谢您的任何帮助。

+0

不应该`* ptr`是'ptr`? – Naveen 2010-11-24 09:30:37

+0

对不起,应该。 – 2010-11-24 09:32:26

回答

4

要么使用sprintf(或者像别人建议的那样,更安全的snprintf)首先将指针打印到缓冲区,或者甚至更好地使用指针放入字符串中。

stringstream tmp; 
tmp << ptr; 
MessageBox(NULL, tmp.str().c_str(), "Pointer", MB_OK); 
0

sprintf是好的,但snprintf更好

1

退房std::ostringstream

#include <sstream> 

std::ostringstream oss; 
int a(5); 
std::string b("Hello!"); 

oss << "This is an example! " << a << ", so I will say " << b; 

// use oss.str() to return a string! 
1

貌似是提升可以做转换:MessageBox(NULL, boost::lexical_cast<std::string>(&x).c_str(), "Pointer", MB_OK);