C++ 解析字符串到指针

C++ 解析字符串到指针,c++,c,pointers,C++,C,Pointers,假设我将内存地址作为字符串表示(比如“0x27cd10”)。如何将其转换为指针(void*) i、 e strtol允许您在解析字符串时指定基数(16表示十六进制,或0表示根据输入中的0x前缀自动检测)。指针存储为整数后,只需使用reinterpret\u cast形成指针 sscanf(address, "%p", (void **)&p); 不需要Strutol或RealTytPixCube(它是C++的,而且在C中没有任何好处)。你也可以这样做: std::string adr

假设我将内存地址作为字符串表示(比如“0x27cd10”)。如何将其转换为指针(void*)

i、 e


strtol
允许您在解析字符串时指定基数(16表示十六进制,或0表示根据输入中的
0x
前缀自动检测)。指针存储为整数后,只需使用
reinterpret\u cast
形成指针

sscanf(address, "%p", (void **)&p);

不需要Strutol或RealTytPixCube(它是C++的,而且在C中没有任何好处)。

你也可以这样做:

std::string adr = "0x7fff40602780";
unsigned long b = stoul(address, nullptr, 16);
int *ptr = reinterpret_cast<int*>(b);
std::string adr=“0x7fff40602780”;
无符号长b=stoul(地址,nullptr,16);
int*ptr=重新解释铸件(b);
如果要将字符串地址转换为对象指针,下面是另一个示例:

std::string adr= "0x7fff40602780";
unsigned long b= stoul(adr, nullptr, 16);
unsigned long *ptr = reinterpret_cast<unsigned long*>(b);
Example *converted = reinterpret_cast<Example*>(ptr);
std::string adr=“0x7fff40602780”;
无符号长b=stoul(adr,nullptr,16);
无符号长*ptr=重新解释铸件(b);
示例*converted=重新解释铸件(ptr);

我的没有从十六进制转换。很好的例子?你在编译之前就知道一些内存的地址了吗?出于好奇,你为什么要这么做?场景是什么?在这种情况下,
(void**)
重新解释演员阵容
。@MaximeGroushkin
p
void*
,因此
&p
void**
,这意味着演员阵容什么都不做。您可以使用
重新解释\u cast
进行
隐式\u cast
,但这太过分了。
std::string adr= "0x7fff40602780";
unsigned long b= stoul(adr, nullptr, 16);
unsigned long *ptr = reinterpret_cast<unsigned long*>(b);
Example *converted = reinterpret_cast<Example*>(ptr);