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