이번절에서는 닷넷 프레임 워크의 System::String를 일반적으로 C++ 에서
사용할사용할 수 있는 char* 또는 wchar_t* 로 변환 해보도록 해봅시다. 간단한
코드라서코드라서 전체 소스와 주석으로 설명을 대신 하겠습니다.
#pragma once
#include <vcclr.h>
#include <atlstr.h>
#include <stdio.h>
#using#using <mscorlib.dll>
using namespace System;
using namespace System::Runtime::InteropServices;
namespace MainEngine {
public ref class MainRenderEngineMainRenderEngine
{
// TODO:TODO: Add your methods for this class here.
public:public:
bool Create(System::String^ strWindowText)
{
//// 유니코드 문자열에 할당
pin_ptr<constpin_ptr<const wchar_t> wch = PtrToStringChars(strWindowText);
MessageBox(NULL, wch, _T("유니코드"), MB_OK);
// 일반 char* 문자열로 변환
size_t convertedChars = 0;
size_t sizeInBytes = ((strWindowText->Length + 1) * 2);2);
errno_t err = 0;0;
char *ch == (char *)malloc(sizeInBytes);
errerr = wcstombs_s(&convertedChars, ch, sizeInBytes, wch, sizeInBytes);
if (err != 0)
{
MessageBox(NULL, _T("char* 변환 에러"), _T("에러"), MB_OK);
}
// ch의 사용
printf_s("%s\n", ch);
return true;
}
};
}