在c ++ / CLI中将c#中的String ^转换为CString
在MFC
编写应用程序时,我需要帮助解决一个问题。
我在我的应用程序中使用CLR
即Common Language Runtime
来集成c#API。 但现在我坚持将System::String^
转换为CString
。 我无法做到这一点。
我正在使用以下代码。
String^ csPass = gcnew String(strPassword.GetBuffer()); array^ Value = Encoding::UTF8->GetBytes(csPass); for (int i = 0; i Length; i++ ) { csPass += String::Format( "{0:X2}", Value[ i ] ); }
现在我想将csPass
转换为CString
。 谁可以帮我这个事。 先感谢您。
考虑阅读有关字符串转换的MSDN线程 。 此外,以下讨论可能对您有用:
- 将CString转换为std :: wstring
- 问题:如何在C ++ MFC中将CString转换为const char *
- 在c ++中将String转换为Cstring
- CString到LPCTSTR的转换
- 将CString转换为char
- 如何将_bstr_t转换为CString
使用这些材料,您可以找到如何做到这一点,甚至发布自己的解决方案作为答案
得到了我的答案。 感谢您对@Elliot Tereschuk的支持。
我已经通过了一些参考资料
- 如何:扩展封送库
- C ++编组的概述
- 对于CString.Format()
和
包含头文件
#include #include
使用using namespace msclr::interop;
库using namespace msclr::interop;
最后我的源代码是。
String^ csPass = gcnew String(strPassword.GetBuffer()); array^ Value = Encoding::UTF8->GetBytes(csPass); for (int i = 0; i < Value->Length; i++ ) { csPass += String::Format( "{0:X2}", Value[ i ] ); } marshal_context^ context = gcnew marshal_context(); const char* str = context->marshal_as(csPass); csMyPass.Format(str);
csMypass
是一个CString
类型的变量。 谢谢你的支持。