C++ 访问具有它的变量值';s的引用地址为字符串

C++ 访问具有它的变量值';s的引用地址为字符串,c++,C++,我想把指针值转换成字符串,所以我有一个变量地址作为字符串,然后用这个字符串转换回指针值,并且能够访问原始变量值 #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*>

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

#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*a=新的int[5];
a[0]=105;
a[1]=106;
a[2]=107;
a[3]=108;
a[4]=109;
const void*地址=静态(a);
std::stringstream-ss;

ss使用
uintpttr\t
保持指针值。类型
uintpttr\u 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
int*a=新的int[5];
a[0]=105;
a[1]=106;
a[2]=107;
a[3]=108;
a[4]=109;
const void*地址=静态(a);
std::stringstream-ss;
ss>温度;//读回整数
int*z=重新解释铸件(温度);//将整数转换为指针

不能使用
uintpttr\t
保存指针值。类型
uintpttr\u 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
int*a=新的int[5];
a[0]=105;
a[1]=106;
a[2]=107;
a[3]=108;
a[4]=109;
const void*地址=静态(a);
std::stringstream-ss;
ss>温度;//读回整数
int*z=重新解释铸件(温度);//将整数转换为指针

这听起来像个XY问题。您需要它做什么?没有读取指针值的标准方法,而写入指针值的标准方法是实现定义的。因此,更好的方法是将指针转换为整数,然后写入整数,并在需要返回指针时执行相反的操作。类型
uintpttr\u t
是一个无符号整数,它保证足够大,可以容纳任何指针learn@AyayMatty好的,假设你把一个变量的地址存储为字符串,把它转换回一个整数值,然后用强制转换把它分配给指针;条款太模糊了。你到底想做什么?为什么?这听起来像是个XY问题。您需要它做什么?没有读取指针值的标准方法,而写入指针值的标准方法是实现定义的。因此,更好的方法是将指针转换为整数,然后写入整数,并在需要返回指针时执行相反的操作。类型
uintpttr\u t
是一个无符号整数,它保证足够大,可以容纳任何指针learn@AyayMatty好的,假设你把一个变量的地址存储为字符串,把它转换回一个整数值,然后用强制转换把它分配给指针;条款太模糊了。你到底想做什么?为什么呢?