如何将\'System :: String ^\'转换为\'TCHAR\'?
|
我在这里问了一个涉及C ++和C#通信的问题。问题得到解决,但导致了新问题。
这将返回一个字符串(C#)
return Marshal.PtrToStringAnsi(decryptsn(InpData));
这需要一个TCHAR *(C ++)
lpAlpha2[0] = Company::Pins::Bank::Decryption::Decrypt::Decryption(\"123456\");
我已经用谷歌搜索了如何解决这个问题,但是我不确定为什么字符串上有一个胡萝卜(^)。最好将String的返回值更改为C ++可以接受的其他值吗?还是我需要在分配值之前进行转换?
没有找到相关结果
已邀请:
3 个回复
羔磺
转换为
,那么您将使用之前使用的编组器,但只能倒退:
编辑:使用ѭ5键完成操作后,不要忘记释放分配的内存。
莽缓逢
或
。因此,我将使用它并编写两次代码。 内联:
或作为一对转换方法,这两种方法都假定输出缓冲区已经分配并且足够大。方法重载应根据TCHAR定义为正确的方法。
誓猎贰
转换为C字符串,这是表示
的另一种方法。我在C ++中的首选方式是将转换后的字符串存储为C ++字符串类型,即
或
,具体取决于您将项目构建为Unicode还是MBCS项目。 无论哪种情况,您都可以使用以下方法:
要么
将字符串转换为正确的宽或窄字符串格式后,即可使用
函数访问其C字符串表示形式,如下所示:
假设
希望您通过C风格的
或
(根据您的编译设置,
将“降级”到)。