我想将指针值转换为字符串,所以我有一个变量地址作为字符串,然后使用这个字符串转换回指针值,并能够访问原始变量值。
#include <sstream>
#include <string>
int *a = new int[5];
a[0] = 105;
a[1] = 106;
a[2] = 107;
a[3] = 108;
a[4] = 109;
const void * address = static_cast<const void*>(a);
std::stringstream ss;
ss << address;
std::string var_address = ss.str();
现在我想做这样的事情:
int *z = var_address;
cout << z[0]; // gives 105
cout << z[1]; // gives 106
我该怎么做?
使用uintptr_t
保存指针值。类型uintptr_t
是一个无符号整数,它保证足够大,可以容纳任何指针。像这个
int *a = new int[5];
a[0] = 105;
a[1] = 106;
a[2] = 107;
a[3] = 108;
a[4] = 109;
const void * address = static_cast<const void*>(a);
std::stringstream ss;
ss << reinterpret_cast<uintptr_t>(address); // write an integer
std::string var_address = ss.str();
std::stringstream ss2(var_address);
uintptr_t temp;
ss2 >> temp; // read back the integer
int *z = reinterpret_cast<int*>(temp); // convert integer to a pointer
cout << z[0]; // gives 105
cout << z[1]; // gives 106