library/CRT

유니코드를 위한 함수

란마12 2011. 1. 8. 15:27

1. 유니코드와 멀티바이트 간 변환 관련

 1.1. MultiByteToWideChar()
 1.2. WideCharToMultiByte()

 1.3. W2A, A2W


#include <atlconv.h>

char szMult[] = "멀티녀석들!!";
wchar_t szWide[] = L"유니코드닷";

USES_CONVERSION; //무조건 정의
strcpy(szMult, W2A(szWide)); // 유니코드 -> 멀티바이트 복사
_tcscpy(szWide, W2A(szMult)); // 멀티바이트 -> 유니코드 복사

 

 1.4. _bstr_t

  #include <comutil.h>

  #pragma comment (lib,"comsuppw.lib" )


  _bstr_t str(L"asdfasfd가나다라");

 

   wchar_t* pstrw = str;

   char* pstra = str;

   TCHAR* pstrt = str;


   주의: sprintf 등 함수의 가변인자로 사용할 경우 반드시 타입을 명시해 줘야한다. 

           sprintf(pstra, "%s", (LPCSTR)pstrw);


2. 문자열 변환 관련


TCHAR szBuf[5] = "a";
StringCchCat(szBuf, _countof(szBuf), "bcdefgh"); //abcd
_tcsncat(szBuf, "bcdefgh", _countof(szBuf)); //abcdefgh

StringCch*계열 함수
 - 널종료에 대해 신경쓰지 않아도 된다.
 - strlwr()함수등 지원하지 않는 함수가 많다.

결론 : StringCch*계열 함수를 쓰되 지원되지 않는 함수에 대해 _tcs*계열 함수를 쓰자.