[개발/VC++] 유니코드 버전으로 된 프로젝트에서 CString 를 char* 로 바꾸는 방법
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) | 2015.10.07 |
---|---|
[개발/VC++] URLEncode, URLDecode, UTF8 변환 소스 (0) | 2015.10.07 |
[개발/LabVIEW] 센서의 기초부터 알아보는 측정시스템 구성 노하우 (0) | 2015.09.10 |
[개발/델파이] TAdvStringGrid에 Combobox 사용하는 방법 (0) | 2015.08.27 |
[개발/델파이] 즐겨찾기 리스트를 리스트박스로 출력하기 (0) | 2015.08.27 |
댓글