C++/CLI 托管C++的托管与非托管字符串的相互转换【1】
2014-07-15 16:45
330 查看
//VS2005版的托管与非托管的字符串的相互转换使用的是Marshal
//之后的版本可以使用Marshaling,该库转换更方便
//这里介绍的是VS2005版的使用Marshal的转换方法
C# Code
C#Code
//之后的版本可以使用Marshaling,该库转换更方便
//这里介绍的是VS2005版的使用Marshal的转换方法
C# Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //----------------------------------------------------------- // 函数名称:ManagedString2UnmanagedAnsiString // 函数功能:将托管字符串转成非托管的ANSI字符串 // 参数: String^ str [in] 托管字符串 // 说明: 返出的字符串使用完后,需要手动释放! //----------------------------------------------------------- //托管字符串转非托管的ANSI字符串 char *ManagedString2UnmanagedAnsiString(String ^ str) { IntPtr p = Marshal::StringToHGlobalAnsi(str); if (p == IntPtr::Zero) return NULL; const char *pTemp = static_cast(p.ToPointer()); if (pTemp == NULL) return NULL; char *pOut = new char[strlen(pTemp) + 1]; strcpy(pOut, pTemp); Marshal::FreeHGlobal(p); return pOut; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //----------------------------------------------------------- // 函数名称:UnmanagedToManagedAnsiString // 函数功能:将非托管字符串转成托管的ANSI字符串 // 参数: char* str [in] 非托管字符串 //----------------------------------------------------------- //非托管字符串转托管的ANSI字符串 String ^ UnmanagedToManagedAnsiString(char *str) { return Marshal::PtrToStringAnsi((IntPtr)str); } |
相关文章推荐
- 《转换指南: 将程序从托管扩展C++迁移到C++/CLI》译后记
- c++.net 托管字符串 非托管指针 互相转换
- 转换指南: 将程序从托管扩展 C++ 迁移到 C++/CLI
- 转换指南: 将程序从托管扩展 C++ 迁移到 C++/CLI
- C++字符串数字相互转换
- 转换指南: 将程序从托管C++扩展迁移到C++/CLI
- 转换指南: 将程序从托管扩展 C++ 迁移到 C++/CLI
- 在非托管C++/CLI引用托管对象
- C++/CLI托管字符串与非托管char数组的转换
- C++字符串之间的相互转换
- 托管,非托管相互转换
- [Tip: _itow]数值和字符串相互转换(C++ 数据类型转换技巧)
- 托管与非托管间的代码级桥梁——C++/CLI
- C++ 整型和字符串相互转换(转载)
- C++调用C#类库 && 非托管C++字符串和托管字符串的转换
- 《转换指南: 将程序从托管扩展C++迁移到C++/CLI》译后记
- [CLI/C++].NET托管代码和非托管代码的相互调用
- 转换指南: 将程序从托管扩展 C++ 迁移到 C++/CLI
- C/C++中ASCII与Unicode字符串相互转换
- 利用C#Marshal类实现托管和非托管的相互转换 .