在c ++ / CLI中将c#中的String ^转换为CString

MFC编写应用程序时,我需要帮助解决一个问题。

我在我的应用程序中使用CLRCommon 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的支持。

我已经通过了一些参考资料

  1. 如何:扩展封送库
  2. C ++编组的概述
  3. 对于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类型的变量。 谢谢你的支持。