c++ char*를 c# string으로 변환하기
c++의 char*는 캐릭터 포인터 즉 문자열의 주소다. c#에서는 IntPtr로 받는다. 이걸 다시 문자열로 바꾸려면 아래와 같이 한다.
IntPtr intPtr = Marshal.AllocHGlobal(_Size);
// copies char* to intPtr
Text = Marshal.PtrToStringAnsi(intPtr);
Marshal.FreeHGlobal(intPtr);
PtrToStringAuto나 PtrToStringUni 아닌 PtrToStringAnsi를 이용하는 것에 유의한다. 복사하는 대상이 언매니지드 안시일 때에는 이걸 쓴다. 메떠드의 이름만 봐서는 복사하는 대상이 아니라 복사된 결과 즉 복사하여 안시 문자열로 만든다는 뜻 같지만 아니다.