2014-01-11 1 views
8

MFC에 내 응용 프로그램을 코딩하는 동안 막힌 곳에 하나의 질문에 대한 도움이 필요합니다.문자열을 C#에서 CString으로 변환합니다. C++/CLI

내 응용 프로그램에 CLR, 즉 을 사용하여 C# API를 통합했습니다. 하지만 지금은 System::String^CString으로 변환하는 데 주력했습니다. 나는 그것을 할 수 없다.

다음 코드를 사용 중입니다.

String^ csPass = gcnew String(strPassword.GetBuffer()); 
array<Byte>^ Value = Encoding::UTF8->GetBytes(csPass); 
for (int i = 0; i < Value->Length; i++) 
{ 
csPass += String::Format("{0:X2}", Value[ i ]); 
} 

는 지금은 CStringcsPass을 변환 할. 어느 누구도이 문제를 해결할 수 있습니까? 미리 감사드립니다.

답변

3

문자열 변환에 대해 this MSDN thread을 읽는 것을 고려하십시오. 또한, 다음과 같은 논의가 당신을 위해 유용 할 수 있습니다 :

이 자료를 통해 당신은 그것을하는 방법을 찾을 수 있으며 대답으로 자신의 해결책을 게시 할 수도 있습니다.

4

내 대답이 있습니다. @Elliot Tereschuk에 감사드립니다.

내가

  1. How to: Extend the Marshaling Library
  2. Overview of Marshaling in C++
  3. For CString.Format()

같은 일부 참조 겪었 포함 헤더 파일

그리고 마지막으로 내 소스 코드가 라이브러리 를 사용

#include <msclr/marshal_windows.h> 
#include <msclr/marshal.h> 

.

String^ csPass = gcnew String(strPassword.GetBuffer()); 
array<Byte>^ 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<const char*>(csPass); 

csMyPass.Format(str); 

csMypassCString 유형 변수입니다. 지원해 주셔서 감사합니다.

+2

좋은 하루 되십시오) –

+0

내 프로젝트에 코드를 복사했지만이 클래스를 인식 할 수 없다고 컴파일러가보고합니다. Encoding :: UTF8-> GetBytes (csPass), 이유를 알고 계십니까? 고맙습니다! – sunjinbo

+0

@sunjinbo는 코드에 헤더 파일을 추가했습니다. 또는 http://stackoverflow.com/questions/6596242/net-systemstring-to-utf8-bytes-stored-in-char을 참조하십시오. –

관련 문제