访问具有字符串引用地址的变量值



我想将指针值转换为字符串,所以我有一个变量地址作为字符串,然后使用这个字符串转换回指针值,并能够访问原始变量值。

#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

相关内容

  • 没有找到相关文章