본문 바로가기
C++/이게 왜 돼 ❔❔❔

[C++] 유니코드 환경에서 CString to char* / char* to CString 변환

by 트럼프 2023. 5. 2.

유니코드환경에서는 한번에 변환이 안돼서 함수 만들어서 쓰는게 속 편한것 같다.

 

CString -> char *

CString strLog = _T("");

wchar_t* wchar_str;
char* char_str;
int char_str_len;

wchar_str = strLog.GetBuffer(strLog.GetLength());
char_str_len = WideCharToMultiByte(CP_ACP, 0, wchar_str, -1, NULL, 0, NULL, NULL);
char_str = new char[char_str_len];

WideCharToMultiByte(CP_ACP, 0, wchar_str, -1, char_str, char_str_len, 0, 0);

return char_str;

 

 

char * -> CString

char* strName = reinterpret_cast<char*>(wParam);

int len = MultiByteToWideChar(CP_ACP, 0, strName, strlen(strName), NULL, NULL);
BSTR buf = SysAllocStringLen(NULL, len);
MultiByteToWideChar(CP_ACP, 0, strName, strlen(strName), buf, len);

CString str;
str.Format(_T("%s"), buf);

return str;

댓글