2010-12-08 68 views

回答

1

试试这个:

CString str("0x1b1be0"); 
void* ptr = (void *)_tcstoul(str.GetBuffer(), 0, 0); 

而且这是纯C:

#include <stdlib.h> 
#include <stdio.h> 

int main() 
{ 
    char *s = "0x1b1be0"; 
    void *p = (void *)strtoul(s, 0, 0); 
    printf("%p", p); 
    return 0; 
} 

试试它Codepad

注意:此版本没有错误检查。只是为了展示这个想法。

1
#include <sstream> 

std::stringstream s; 
s << "0x1234"; 
void* a; 
s >> std::hex >> a; 
0

这是一段代码。

#include <sstream> 
#include <iostream> 

int main() { 
    void * x; 
    std::stringstream ss; 
    ss << std::hex << "0x1b1be0"; 
    ss >> x; 
    std::cout << x << std::endl; 
} 
0

嗯,除非你写的东西非常低的水平,例如一个调试器,不必做这样的事情是非常值得怀疑的......

你确定你知道什么是指针手段?

你知道指针对你的过程是私有的吗?他们通常在外面没有意义。

要回答你的问题,你明明有:

  1. 将您的字符串转换为intptr_t使用例如std::sscanf%x格式说明。
  2. reinterpret_cast< void* >指定指针。