티스토리 뷰
멀티바이트 문자열을 유니코드 문자열로 변경하는 방법
1. MultiByteToWideChar() 함수를 사용하는 방법.
이 함수는 Windows API의 일부이며, 다음과 같은 매개 변수를 사용합니다.
- CodePage: 변환할 멀티바이트 문자열의 코드 페이지
- dwFlags: 변환 방법을 지정 (일반적으로 0으로 설정)
- lpMultiByteStr: 변환할 멀티바이트 문자열의 포인터
- cchMultiByte: 변환할 멀티바이트 문자열의 길이 (-1로 설정하면 자동으로 계산됨)
- lpWideCharStr: 변환된 유니코드 문자열을 저장할 버퍼의 포인터
- cchWideChar: 변환된 유니코드 문자열의 버퍼 길이 (MultiByteToWideChar 함수는 변환된 문자열의 길이를 반환함)
void MultiByteToUnicode(const char* mbString, wchar_t* unicodeString, int len)
{
int result = MultiByteToWideChar(CP_ACP, 0, mbString, -1, unicodeString, len);
if (result == 0) // 변환 실패
{
DWORD error = GetLastError();
// 에러 처리
}
}
// 유니코드 문자열을 멀티바이트 문자열로
void UnicodeToMultiByte(const wchar_t* unicodeString, char* mbString, int len)
{
int result = WideCharToMultiByte(CP_ACP, 0, unicodeString, -1, mbString, len, NULL, NULL);
if (result == 0) // 변환 실패
{
DWORD error = GetLastError();
// 에러 처리
}
}
2. CString 클래스를 사용하는 방법
MFC에서는 CString 클래스를 사용하여 멀티바이트 문자열과 유니코드 문자열을 모두 다룰 수 있습니다. CString 클래스는 TCHAR 데이터 형식을 기반으로 하며, TCHAR는 char 또는 wchar_t 중 하나로 정의됩니다.
CStringA 클래스는 멀티바이트 문자열을 다루며, CStringW 클래스는 유니코드 문자열을 다룹니다. CString 클래스는 이 둘을 자동으로 변환해 주므로, 멀티바이트 문자열과 유니코드 문자열을 서로 변환하는 과정이 필요하지 않습니다.
아래 소스 참조 바랍니다.
CStringA mbString("안녕하세요");
CStringW unicodeString(mbString);
// 유니코드 문자열을 멀티바이트 문자열로
CStringW unicodeString(L"안녕하세요");
CStringA mbString(unicodeString);
3. ATL(MFC의 경량 버전)에서 제공하는 ATL::CA2W 클래스를 사용하는 방법
ATL에서는 멀티바이트 문자열을 유니코드 문자열로 변환하기 위해 ATL::CA2W 클래스를 제공합니다. 이 클래스는 멀티바이트 문자열을 ATL 스트링으로 변환한 뒤, 이를 유니코드 문자열로 변환합니다.
CStringA mbString("안녕하세요");
ATL::CA2W unicodeString(mbString);
// 유니코드 문자열을 멀티바이트 문자열로
CStringW unicodeString(L"안녕하세요");
ATL::CW2A mbString(unicodeString);
개인적으로 학습하면서 정리한 내용입니다.
잘못된 내용이 있을 경우 알려주시면 확인 후 수정 및 반영하도록 하겠습니다.
오늘도 감사합니다.(__)>
'개발 > VC++ (MFC)' 카테고리의 다른 글
MFC : 타이틀바에 시간 정보 출력하기 (0) | 2023.06.23 |
---|---|
MFC : 가변인자 처리 wvsprintf() -> vswprintf() (0) | 2023.06.01 |
MFC : Failed to return... (0) | 2023.05.25 |
MFC : 윈도우(창) 좌표 이야기 (0) | 2023.05.22 |
MFC : 개발 소소한 팁 정리 (0) | 2023.04.28 |