CString str("0x1b1be0")
void* ptr = NULL;
现在我想分配ptr = 0x1b1be0
。我如何实现这一目标?如何将地址分配给一个指针,其中地址是存储在CString对象中的?
CString str("0x1b1be0")
void* ptr = NULL;
现在我想分配ptr = 0x1b1be0
。我如何实现这一目标?如何将地址分配给一个指针,其中地址是存储在CString对象中的?
试试这个:
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。
注意:此版本没有错误检查。只是为了展示这个想法。
#include <sstream>
std::stringstream s;
s << "0x1234";
void* a;
s >> std::hex >> a;
这是一段代码。
#include <sstream>
#include <iostream>
int main() {
void * x;
std::stringstream ss;
ss << std::hex << "0x1b1be0";
ss >> x;
std::cout << x << std::endl;
}
嗯,除非你写的东西非常低的水平,例如一个调试器,不必做这样的事情是非常值得怀疑的......
你确定你知道什么是指针手段?
你知道指针对你的过程是私有的吗?他们通常在外面没有意义。
要回答你的问题,你明明有:
intptr_t
使用例如std::sscanf
与%x
格式说明。reinterpret_cast< void* >
指定指针。
好吧,用scanf? – x13n 2010-12-08 12:49:43
你想做什么?如果你用这个指针做任何事情,它很可能是UB。 – etarion 2010-12-08 12:57:31
“现在我想分配......”你为什么期待这个任务有用? – 2010-12-08 13:10:04