如何为地址存储在CString对象中的指针分配地址?

时间:2010-12-08 12:44:50

标签: c++

CString str("0x1b1be0")
void* ptr = NULL;

现在我想分配ptr = 0x1b1be0。我如何实现这一目标?

4 个答案:

答案 0 :(得分:1)

#include <sstream>

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

答案 1 :(得分: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上试用。

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

答案 2 :(得分:0)

这是一段代码。

#include <sstream>
#include <iostream>

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

答案 3 :(得分:0)

嗯,除非你正在写一些非常低级的东西,比如调试器,否则不得不做这样的事情是非常值得怀疑的......

你确定你知道指针是什么意思吗?

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

要回答你的问题,你显然必须:

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