C++/CLI 托管C++之字符串封装【5】
来源:互联网 发布:国中土耳其 知乎 编辑:程序博客网 时间:2024/06/05 15:39
【1】字符串作为输入参数
C++导出函数:
//1.1 字符串作为输入参数EXPORTDLL_CLASS int Str_Output( WCHAR *pInStr ){if (NULL == pInStr){return(-1);}wprintf(L"Str_Output %s\n", pInStr);return(0);}
/// <summary> /// 1 字符串测试类 /// </summary>public ref class StrCls{ public: /// <summary> /// 1.1 字符串作为输入参数 /// </summary> /// <param name="pInStr">字符串</param> /// <returns>成功返回0</returns> static Int32 StrOutput(String^ pInStr); /// <summary> /// 1.2 字符串作为参数,需要进行修改返回 /// </summary> /// <param name="pOutStr">字符串</param> /// <returns>成功返回0</returns> static Int32 StrChange(String^ %pOutStr); /// <summary> /// 1.3 字符串数组作为参数 /// </summary> /// <param name="ppStr">字符串数组</param> /// <returns>成功返回0</returns> static Int32 StrChangeArr(array<String^>^ %ppStr);};
System::Int32 ExportCLI::StrCls::StrOutput( String^ pInStr ){ if (String::IsNullOrEmpty(pInStr)) { return(-1); } WCHAR *pStr = ManagedStr2UnmanagedUniStr(pInStr); HRESULT hr = Str_Output(pStr); //内存释放 if (NULL != pStr) { delete []pStr; pStr = NULL; } return(hr);}
//1. 字符串测试类string pInStr = "1.1";StrCls.StrOutput(pInStr);
【2】字符串作为参数,需要返回修改
//1.2 字符串作为参数,需要进行修改返回EXPORTDLL_CLASS int Str_Change( WCHAR *pOutStr){if (NULL == pOutStr){return(-1);} int len = wcslen(pOutStr);for (int ix=0; ix<len-1; ix++){pOutStr[ix] = 'a' + (ix) % 26;}pOutStr[len-1] = '\0\0';wprintf(L"Str_Change %s\n", pOutStr);return(0);}
System::Int32 ExportCLI::StrCls::StrChange( String^ %pOutStr ){ if (String::IsNullOrEmpty(pOutStr)) { return(-1); } WCHAR *pStr = ManagedStr2UnmanagedUniStr(pOutStr); HRESULT hr = Str_Change(pStr); pOutStr = UnmanagedStr2ManagedUniStr(pStr); //内存释放 if (NULL != pStr) { delete []pStr; pStr = NULL; } return(hr);}
string pOutStr = "1.2";StrCls.StrChange(ref pOutStr);
【3】字符串数组作为参数,需要返回修改
C++导出函数:
//1.3 字符串数组作为参数EXPORTDLL_CLASS int Str_ChangeArr( WCHAR **ppStr, int len ){if (NULL == ppStr){return(-1);}for (int ix=0; ix<len; ix++){if (NULL != ppStr[ix]){lstrcpyn(ppStr[ix], L"abc", wcslen(ppStr[ix]));}}wprintf(L"Str_ChangeArr \n");return(0);}
System::Int32 ExportCLI::StrCls::StrChangeArr( array<String^>^ %ppStr ){ if (ppStr == nullptr) { return(-1); } int len = ppStr->Length; //数据元素的个数 WCHAR **pp = new WCHAR *[len]; for (int ix=0; ix<len; ix++) { pp[ix] = ManagedStr2UnmanagedUniStr(ppStr[ix]); } HRESULT hr = Str_ChangeArr(pp, len); for (int ix=0; ix<len; ix++) { ppStr[ix] = UnmanagedStr2ManagedUniStr(pp[ix]); } //内存释放 for (int ix=0; ix<len; ix++) { delete [](pp[ix]); pp[ix] = NULL; } delete []pp; pp = NULL; return(hr);}
string[] ppStr = new string[2] { "1.31.......", "1.32......." };StrCls.StrChangeArr(ref ppStr);
https://coding.net/u/aoshilangCode/p/CLI/git
0 0
- C++/CLI 托管C++之字符串封装【5】
- C++/CLI 托管C++之enum枚举封装【6】
- C++/CLI 托管C++之结构体封装【8】
- C++/CLI 托管C++之联合体union封装【10】
- C++/CLI托管
- C++/CLI 托管C++之结构体封装(内存对齐#pragma pack)【9】
- C++/CLI 托管C++之类、属性封装【7】
- 托管C++、C++/CLI、CLR
- C++/CLI 托管C++的托管与非托管字符串的相互转换【1】
- C++/CLI思辨录之传递托管堆地址
- C++/CLI 托管C++之导出注释【11】
- C++/CLI(四):字符串
- C++/CLI与非托管并列缓存
- c++/cli之我见
- 有关.NET框架、托管、C++/CLI、CLR等等
- C++/CLI学习笔记1—新的托管类型
- C++/CLI 托管C++的数据类型介绍【2】
- C++/CLI 托管C++的基本数据类型及函数【3】
- 面向对象编程
- 高级图形编程(基于opengl)3
- HDU 2093考试排名
- ios 手势
- python 笔记
- C++/CLI 托管C++之字符串封装【5】
- uva 784 Maze Exploration(DFS遍历图)
- 新托福考试题型介绍
- 托福网考网上报名程序说明
- 函数指针是一个高级主题
- BigDecimal类的加减乘除
- 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告
- iOS开发——仿淘宝添加到购物车的动画效果实现
- 语法分析的理论知识---整理自龙书