1
A
回答
1
這個答案是爲了幫助擴展我們在評論中的對話。
請參見下面的代碼爲例:
#include <stdio.h>
#include <string.h>
#include <string>
int main()
{
// Part 1 - Place some C-string in memory.
const char* const pszSomeString = "delicious";
printf("SomeString = '%s' [%08p]\n", pszSomeString, pszSomeString);
// Part 2 - Suppose we need this in an int representation...
const int iIntVersionOfAddress = reinterpret_cast<int>(pszSomeString);
printf("IntVersionOfAddress = %d [%08X]\n", iIntVersionOfAddress, static_cast<unsigned int>(iIntVersionOfAddress));
// Part 3 - Now bring it back as a C-string.
const char* const pszSomeStringAgain = reinterpret_cast<const char* const>(iIntVersionOfAddress);
printf("SomeString again = '%s' [%08p]\n", pszSomeStringAgain, pszSomeStringAgain);
// Part 4 - Represent the string as an std::string.
const std::string strSomeString(pszSomeStringAgain, strlen(pszSomeStringAgain));
printf("SomeString as an std::string = '%s' [%08p]\n", strSomeString.c_str(), strSomeString.c_str());
return 0;
}
第1部分 - 變量pszSomeString
應該代表你正試圖尋求(爲目的給出的任意值,但0x00020348
內存真正串起例)。
第2部分 - 你提到,你是存儲指針值作爲int
,所以iIntVersionOfAddress
是指針的整數表示。
第3部分 - 然後我們取整數「指針」並將其恢復到const char* const
,以便它可以再次視爲C字符串。
第4部分 - 最後我們使用C字符串指針和字符串的長度構造std::string
。由於C字符串是空字符('\0'
) - 終止,因此您實際上並不需要字符串的長度,但是我要說明此形式的std::string
構造函數,如果您必須自己邏輯地計算出長度。
輸出如下:
SomeString = 'delicious' [0114C144]
IntVersionOfAddress = 18137412 [0114C144]
SomeString again = 'delicious' [0114C144]
SomeString as an std::string = 'delicious' [0073FC64]
指針地址會有所不同,但前三個十六進制指針值是相同的,正如所預期的。爲std::string
版本構建的新字符串緩衝區是完全不同的地址,也是預期的。
最後的注意事項 - 對代碼一無所知,void*
通常會被認爲是比int
更好的通用指針表示。
相關問題
- 1. 如何從地址獲取字符串?
- 2. 從字符串獲取IP地址(Groovy)
- 3. 從字符串獲取完整地址
- 4. 如何從字符串中獲取電子郵件地址
- 5. 如何從字符串中獲取地址?
- 6. 如何從長指定的地址獲取字符串VB
- 7. 獲取地址部分出地址字符串
- 8. 地理位置如何從隨機字符串中獲取地址
- 9. 從字符串中獲取網址groovy
- 10. 從字符串獲取圖片網址
- 11. 如何通過座標獲取字符串地址?
- 12. 如何獲取字符串中特定元素的地址
- 13. 如何從此字符串提取IP地址和端口號?
- 14. 如何從字符串中提取地址的部分?
- 15. 從KML文件獲取字符串數組的地址列表
- 16. Objective-C從字符串獲取電子郵件地址
- 17. C#獲取城市和郵編從地址字符串
- 18. 從查詢字符串中的地址欄中獲取值
- 19. 如何從FTP地址獲取基址?
- 20. 如何使用preg_match從網址獲取字符串?
- 21. 如何從approot(網址)獲取字符串?
- 22. 如何從文本字符串獲取網址?
- 23. 如何從字符串中適當地獲取字節?
- 24. 如何從一串字符串中獲取字符串?
- 25. 從C中的一個字符串中提取網址地址
- 26. 從字符串獲取子字符串__
- 27. 如何從ListView獲取字符串?
- 28. 如何從字符串「HH:MM:SS」獲取TimeZone?
- 29. 如何從json字符串獲取值?
- 30. 如何從XMLObject獲取字符串