댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
MFC
2006.04.14 10:29
CString을 유니코드로 변환 WCHAR에 저장하는 방법
조회 수 59393 댓글 1
[질문]
우선 에디터 박스에 변수를 선언하고... CString m_Edit_A; 라고 했습니다. 이것을 유니코드로 변환하여 WCHAR chTmp[20]; 여기에 각문자를 유니코드로 저장을 하여야 하는데... 잘 안되네요... 고수님들의 방법을 알려주세요.... [답변] CString str = "test" ; LPWSTR lpszW = new WCHAR[255]; LPTSTR lpStr = str.GetBuffer( str.GetLength() ); int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL); MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen); //lpszW delete[] lpszW; Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
해당 함수는 ANSI 코드 -> Unicode로 변환하는 API 루틴이다 MSDN을 주의깊게 읽지 않으면 다음과 같은 실수를 할수 있다.
WCHAR converted[64];
MultiBytetoWideChar(CP_ACP, 0, original, -1 converted, sizeof(converted));
MultiBytetoWideChar의 6번째 인자는 출력버퍼의 Unicode 글자수이다.
sizeof(converted)가 64가 아니라 128이라는 점을 유의해야 한다.
해당함수는 Unicode로 128글자까지 쓰기시도하므로 버퍼 오버런이 발생할수 있다.