當我在C++中使用GUI時,我認爲文本字段存儲爲託管字符串。我需要一種方法將它們轉換爲標準整數,浮點數和字符串。任何幫助?在C++中託管和非託管類型之間的轉換?
1
A
回答
3
您可以使用Marshal.StringToHGlobalAnsi將System.String轉換爲非託管字符*。確保您完成後通過撥打Marshal.FreeHGlobal解鎖。要將字符串轉換爲數字值,可以使用常規的.NET解析函數,如Int32.Parse
。
0
要在本地代碼中使用託管內存,您必須首先將託管內存的內容複製到本機內存中。
因此,例如:
從託管內存複製的內容如下:
const int len = 50;
BYTE *destination = new BYTE[nLength];
System::Byte source[] = new System::Byte[len];
System::Runtime::InteropServices::Marshal::
Copy(source, 0, IntPtr((void *)destination, len);
因爲我們正在處理的管理內存,垃圾收集可以移動和管理數據移動到另一個位置,如果我們試圖找到我們想要轉換的數據,全部都會丟失。
因此,我們希望通過__pin轉換「別針把它在內存中」從託管到非託管:
const int len = 50;
BYTE *source = new BYTE[len];
System::Byte destination[] = new System::Byte[len];
BYTE __pin *managedData = &(destination[0]);
::memcpy(source, managedData, len);
0
只需通過
CString* name = new CString(managedName);
轉換系統:字符串^對象,MFC的CString
其中managedName是託管字符串。
相關問題
- 1. 託管和非託管代碼之間的轉換
- 2. C++託管到非託管轉換
- 3. 跨組件邊界將託管C++/CLI類型轉換爲非託管類型
- 4. 將非託管轉換爲託管過程中的託管
- 5. 託管和非託管C++和Boost
- 6. 如何將用戶定義的非託管類型轉換爲託管類型?
- 7. C++託管和非託管靜態庫
- 8. 橋接非託管和託管類
- 9. C++/CLI之間的託管/非託管並衡量其成本
- 10. 託管和非託管堆
- 11. ERROR_MORE_DATA --- PVOID和C#---非託管類型
- 12. 將數據類型從C(非託管)映射到C#(託管)
- 13. 傳遞非託管的指針非託管對象在託管類C++/CLI
- 14. C++/CLI:非託管類的聲明和託管類
- 15. 在非託管C++ DLL和託管C#UI之間發送信息
- 16. 託管磁盤和非託管磁盤之間的區別
- 17. Gdiplus在C++託管或非託管?
- 18. C++/CLI:從非託管枚舉轉換爲託管枚舉
- 19. c#:通常將非託管陣列轉換爲託管列表
- 20. 轉換結構手柄從託管到非託管C++/CLI
- 21. 託管類型C++
- 22. 如何在C++/CLI中混合使用混合類型(託管和非託管)?
- 23. 託管和非託管DLL之間有什麼區別
- 24. 將非託管/非託管成員添加到託管類
- 25. 非託管代碼之間的快速數據交換和託管代碼
- 26. 動態鏈接託管的C++類庫中的非託管dll
- 27. 如何將這兩個非託管結構轉換爲託管類型?
- 28. 混合託管/非託管C++?
- 29. DebugBreak的行爲在非託管和混合(非託管+託管)應用程序之間有所不同?
- 30. 揭露非託管量靜態的std :: string在託管C++類