Mob*_*man 0 c++ pointers memory-address
我有一个 C++ 代码,它将指针地址作为参数。代码参数是:
./主0x7fad529d5000
现在,在读取参数时,该值将作为字符串读取。
如何将字符串“0x7fad529d5000”转换为地址?
从 stdin 读取十六进制:
uintptr_t x;
std::cin >> std::hex >> x;
Run Code Online (Sandbox Code Playgroud)
从字符串中读取十六进制:
uintptr_t x;
// assuming you used argc / argv and checked argc > 1
std::istringstream sstr( argv[1] );
sstr >> std::hex >> x;
Run Code Online (Sandbox Code Playgroud)
另一种选择是,x = std::stoll( argv[1] );但那里涉及到我不太喜欢的强制转换(假设 的宽度uintptr_t)。
将其转换为指针:
void * p = reinterpret_cast<void *>(x);
Run Code Online (Sandbox Code Playgroud)
小心处理该指针值,因为它不太可能有效。(reinterpret_cast应该向你尖叫“危险!”。)