我认为,当我在 C++ 中使用 GUI 时,文本字段存储为托管字符串。我需要一种将它们转换为标准整数、浮点数和字符串的方法。有什么帮助吗?
问问题
2972 次
3 回答
3
您可以使用Marshal.StringToHGlobalAnsi将 System.String 转换为非托管 char * 。完成后调用Marshal.FreeHGlobal确保释放它。要将字符串转换为数值,您可以使用常规的 .NET 解析函数,例如Int32.Parse
.
于 2009-04-12T04:09:18.440 回答
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);
于 2009-04-12T04:27:23.450 回答
0
您可以简单地将 System::String^ 对象转换为 MFC CString
CString* name = new CString(managedName);
其中 managedName 是一个托管字符串。
于 2009-04-22T09:30:45.320 回答