当我在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. C++托管到非托管转换
- 2. 将非托管转换为托管过程中的托管
- 3. 如何将用户定义的非托管类型转换为托管类型?
- 4. C++托管和非托管静态库
- 5. C++/CLI之间的托管/非托管并衡量其成本
- 6. ERROR_MORE_DATA --- PVOID和C#---非托管类型
- 7. 传递非托管的指针非托管对象在托管类C++/CLI
- 8. C++/CLI:非托管类的声明和托管类
- 9. 托管磁盘和非托管磁盘之间的区别
- 10. 转换结构手柄从托管到非托管C++/CLI
- 11. C++/CLI:从非托管枚举转换为托管枚举
- 12. c#:通常将非托管阵列转换为托管列表
- 13. Gdiplus在C++托管或非托管?
- 14. 托管和非托管DLL之间有什么区别
- 15. 将非托管/非托管成员添加到托管类
- 16. 非托管代码之间的快速数据交换和托管代码
- 17. 如何将这两个非托管结构转换为托管类型?
- 18. 动态链接托管的C++类库中的非托管dll
- 19. DebugBreak的行为在非托管和混合(非托管+托管)应用程序之间有所不同?
- 20. 如何将非托管IntPtr类型转换为c#字符串?
- 21. 托管vs非托管
- 22. DirectX托管或非托管?
- 23. C#中的非托管C++类
- 24. C++/CLI将非托管本机C++列表转换为托管C++/CLI列表
- 25. 非托管char *数组托管System ::字符串托管C++
- 26. 非托管内存和托管存储
- 27. 在非托管C++ dll中使用托管c#dll
- 28. 获取尝试非托管C++类转换为托管C++类(在.NET中使用)
- 29. 将托管字节数组转换为非托管字符串
- 30. 如何将非托管双转换为托管字符串?