2016-07-31 47 views
0

所以我有一個字符串保存到另一個變量的地址,我想將該地址轉換爲實際指針,以便我可以編輯該地址的值。包含值地址的字符串 - >指向該值的指針

所以,我基本上想做與此相反的事情。

int value = 10; 
auto address = reinterpret_cast<uintptr_t>(&value); 
std::stringstream ss; 
ss << std::hex << address; 
std::string strAddr (ss.str()); 
std::cout << "Address of value = " << strAddr << std::endl; // just append "0x" to start if you want to format it like hex 
+0

而且得到了什麼? UB? – LogicStuff

+2

您知道序列化指針在單個進程上下文之外不穩定嗎? –

+0

就像@πάνταῥεῖ所說的那樣,地址在當前進程之外沒有意義 - 此外,如果地址指向堆棧上的變量,則在離開其作用域時該地址變爲無效。 –

回答

1

相反的過程:

const std::string address_as_text = "0x12345678"; 
unsigned int address_as_number = 0U; 
std::istringstream addr_stream(address_as_text); 
addr_stream >> hex >> address_as_number; 
int * pointer_to_int = (int *) address_as_number; 
int value_from_memory = *pointer_to_int; 
+0

只要它是'std :: string'變量,源代碼就無關緊要。 –

+0

如果此答案有幫助,請點擊複選標記。 –

相關問題