c++ char * 转换c# 一般直接string 或者Marshal.StringToHGlobalAnsi(“string”)为IntPtr 即可。
但是如果string包含中文,c++收到中文是乱码。
解决办法:把string转为byte[] 再放到内存指针即可。
byte[] encodedBytes=Encoding.UTF8.GetBytes("string");
IntPtr wordPtr = Marshal.AllocHGlobal(encodedBytes.Length);
Marshal.Copy(encodedBytes, 0, wordPtr, encodedBytes.Length);
最后将wordPtr传给c++即可。
本文详细介绍了如何在C++与C#之间正确传递包含中文的字符串,避免乱码问题。通过将C#的string转换为UTF8编码的byte数组,再转化为IntPtr,确保了跨平台数据的正确性。

8304

被折叠的 条评论
为什么被折叠?



