MFC에서 유니코드 버전으로 된 프로젝트에서 CString 를 char* 로 바꾸는 방법은
유니코드 상태에서 CString 을 바로 CHAR* 로 바꾸는 것이 안됩니다.
W2A 나 A2W 로 코드 변환을 하거나 wsprintf(); 함수를 이용 하면 됩니다.
유니코드는 사용 되는 바이트 수가 2바이트이고 1바이트 문자열로 변환하면 깨져 버리는 문자열 들이 있는데 처리를 해야 합니다.
유니코드를 멀티바이트 코드로 변환 하려면
char Text[80];
wsprintfA(Text, "%s", L"문자열" );
멀티바이트 코드를 유니코드로 변환 하려면
WCHAR Text[80];
wsprintfW(Text, L"%s", "문자열" );
변환될 문자열을 %s(대문자)로 wsprintf()함수를 사용합니다.
※ 현재로써는 바로 CString 에서 char*(LPSTR , LPCSTR) 로 변환 할수 없습니다.
참고로 더 설명을 하면 CString 기본 요소는 CStringBase<WCHAR> , CStringBase<CHAR> 둘로 나누어집니다.
이 두 클래스 사이에서 바로 입력 변환이 불가능 합니다.
변환시에는 API 함수로 코드 변환 후에 사용 해야 하며
CStringBase<CHAR> 로 사용 한다면 유니코드 내에서 ANSI 코드를 사용 할 수 있습니다.
또 다른 방법의 함수
-----------------------------
CString을 유니코드로
CString tmp("test");
WCHAR m_wPath[MAX_PATH];
wcscpy(wPath,tmp.GetBuffer(0));
'IT-개발,DB' 카테고리의 다른 글
[개발/VC++] URLEncode, URLDecode, 유니코드 변환 소스 (0) | 2011.02.10 |
---|---|
[개발/VC++] URLEncode, URLDecode, UTF8 변환 소스 (0) | 2011.02.10 |
[개발/VC] IE 서브클래싱(subclass) (0) | 2011.02.07 |
[개발/VC++] 인터넷 익스플로러 윈도우 핸들 구하기 (0) | 2011.02.01 |
[개발/VC++] ActiveX에서 javascript 함수 호출방법 (0) | 2011.01.31 |
댓글