필자가 회사의 ATL을 사용해서 ActiveX 파일 업로드 컨트롤을 개발하면서, 유니코드 문자열을 멀티바이트로 변환할 필요가 있어서 작성한 코드입니다.
프로젝트의 기본 Character Set을 "Use Unicode Character Set"으로 한 관계로 별도로 변환을 해야 했던 것으로 기억납니다.
[샘플 참조]
포스트(POST) 될 데이타를 멀티바이트로 변환해서 업로드 함...
......
......
// _T 매크로 : 기본 문자셋이 유니코드일 경우 wchar_t 으로 변환됨.
TCHAR sContHeaderParam[2048] = {0};
_stprintf(sContHeaderParam, _T("\r\n-----------------------------7d425b3bf0cdc\r\nContent-Disposition: form-data; name=\"XMDocID\"\r\n\r\n%s"), XMDocID);
// 멀티바이트(char*)로 변환시 사이즈 가져오기.
int AnsiStrSize = WideCharToMultiByte(CP_ACP, 0, sContHeaderParam, -1, NULL, 0, NULL, NULL);
char *AnsiStrHeaderParam = new char[AnsiStrSize+1]; // 가져온 사이즈로 메모리 할당.
memset(AnsiStrHeaderParam, 0, AnsiStrSize+1); // 초기화.
WideCharToMultiByte(CP_ACP, 0, sContHeaderParam, -1, AnsiStrHeaderParam, AnsiStrSize, 0, 0); //변환
........
// 모든 작업이 마무리된 후에 메모리 해제.
free(AnsiStrHeaderParam);
결국, wchar_t 문자열을 char*로 변환하는 것임.
'[Native] C/C++/ATL > [C/C++, ATL] Dev Tips' 카테고리의 다른 글
C++에서 숫자를 문자로 변환(Converts an integer to a string) (0) | 2010.08.18 |
---|---|
C++ 에서 GUID 생성하기 (0) | 2010.08.18 |
HTML 내에서 사용하는 십진수(decimal) 유니코드 문자값(Unicode Value)을 실제 유니코드 문자로 변환하기 (0) | 2010.08.12 |
VS2005에서 ATL에 이벤트(Connection Point)를 수동으로 추가하기 (0) | 2010.07.30 |
Visual C++에서 사용하는 다양한 문자열의 변환 (0) | 2010.06.22 |
유니코드에서 멀티바이트로의 변환(유니코드 변환) (0) | 2010.06.21 |