C#中的string转换成C++中的char[ ]

在日常的编程中,常常遇到C#和C++联合编程,在这过程中就可能遇到从C#中把string类型的数据传到C++的dll文件中,对应的在C++中是char[ ]类型。(C#中的char[ ]对应C++中的wchar_t[ ] )代码如下:
在C#中:
unsafe
{
fixed( char* p = &(stress.ToCharArray()[0]))
{
WriteString§; ///<这是dll文件里的函数
}
} /// ///<&(stress.ToCharArray()[0])是将string转换成字符数组,并获取首地址
在dll文件中:
char* stress;
__declspec(dllexport) void __stdcall WriteString(wchar_t* pWCStrKey)
{
int pSize = WideCharToMultiByte(CP_OEMCP, 0, pWCStrKey, wcslen(pWCStrKey), NULL, 0, NULL, NULL);
char* pCStrKey = new char[pSize + 1];
//第二次调用将双字节字符串转换成单字节字符串
WideCharToMultiByte(CP_OEMCP, 0, pWCStrKey, wcslen(pWCStrKey), pCStrKey, pSize, NULL, NULL);
pCStrKey[pSize] = ‘\0’;
stress = pCStrKey;
}///<这段代码已经不记得是在哪篇博客里看到的,本人水平有限,还不太懂里面的原理,不过亲测有效

这样就可以调用stress了。
如果还不会怎样生成dll文件,可以转到如下链接:
C#调用C++的dll

你可能感兴趣的:(C#中的string转换成C++中的char[ ])