C, C++2007. 12. 31. 23:17


int MultiByteToWideChar(
  UINT CodePage,
  DWORD dwFlags,        
  LPCSTR lpMultiByteStr,
  int cbMultiByte,      
  LPWSTR lpWideCharStr
  int cchWideChar       
);

Maps a character string to a wide character (Unicode) string. The character string mapped by this function is not necessarily from a multibyte character set.

기능은 (MBCS형 문자열) -> (유니코드 문자열) 로 코드 페이지에 따라 변환...입니다.

자세히 설명하자면,
 1) CodePage 는 문자 그대로 MS 에서 정한 국가 코드이자 문자열 변환 관리 코드입니다. 물론, 한 국가가 여러 코드를 쓰거나, 여러 국가가 한 코드를 쓰는 나라들도 있을 수 있지만, 어쨌든 한국은

949 ANSI/OEM - Korean (Unified Hangul Code)
입니다. 상수를 그대로 써도 되지만 CP_ACP 등의 defined 상수를 쓰는 것이 가독성이 좋을 겁니다.
 2) lpMultiByteStr 는 MBCS 형 문자열입니다. 즉, 문자 한글자가 한 바이트일 수도 있고, 두개/ 세개의 바이트로도 이루어 질 수 있는 문자열을 의미합니다. 그리고, cbMultiByte 는 그 문자열의 길이를 의미 합니다. 물론 이 값이 -1이면, null로 끝나는 문자열로 인식하고 문자열을 처리합니다.
 3) lpWideCharStr 는 변환될 유니코드 문자열입니다. 당연히 입력값보다는 크고 넉넉한 버퍼를 잡아야 합니다. 그리고 그 버퍼 길이는 cchWideChar 입니다.

 반환값으로 0 이 오면 실패, 아니면 성공입니다. 이 때, GetLastError() 로 오류를 알 수 있으며, 대부분 버퍼 크기 관련 오류 입니다. (작은 출력 버퍼를 잡았거나, 너무 큰 입력 버퍼의 설정, 코드 페이지에 따른 변환 실패 등등등)

출처 : MSDN
 

반응형

'C, C++' 카테고리의 다른 글

MFC 9.0 Beta  (0) 2008.04.07
Shift Operaotr  (0) 2008.03.28
구조체 멤버의 오프셋 얻기  (0) 2007.10.12
로케일 문자열 길이  (0) 2007.09.08
32비트 윈도우즈에서의 자료형  (2) 2007.09.04
Posted by Jay Two