Windows Programming

UNICODE 처리

macro 2009. 3. 24. 15:37
반응형

C Runtime 함수

  • char - TCHAR  : CHAR, WCHAR
  • char* - TCHAR * : CHAR*, WCHAR*
  • TCHAR buffer[100] = TEXT("A STRING");
  • WCHAR buffer[100] = L"A STRING";
  • strlen, wcslen -> _tcslen : 길이는 문자열 변경이 없으므로 _tcslen 사용가능
  • strcpy, wcscpy -> _tcscpy -> _tcscpy_s : 버퍼 오버런을 막기위해 s 함수 사용권장 (lstrcat, lstrcpy 사용 금지!)
  • strcat -> _tcscat -> _tcscat_s :버퍼 오버런을 막기위해 s 함수 사용권장
  • Cch(문자열 갯수)를 가져올때는  _countof
  • CB(바이트 수)를 가져올때는 sizeof
  • StringCchCat(Ex)
  • StirngCchCopy(Ex)
  • StringCchPrintf(Ex)
  • malloc(characters * sizeof(TCHAR)) 의 형식으로 문자열에 대해서는 이렇게 사용한다. 아래는 편하게.
  • #define chmalloc(characters) (TCHAR*)malloc(characters*sizeof(TCHAR))
  • 버퍼의 크기는 바이트단위가 아닌 문자 단위로 전달함. _countof(buffer)
  • WCHAR buffer[100]; 은 99개의 2byte 문자와 1개의 2byte \0 문자를 나타낸다. 따라서 100 이란 문자의 갯수를 나타냄.
  • memcpy_s, memmove_s, wmemcpy_s, wmemmove_s 함수를 사용한다. 헤더파일은 CrtDefs.h


윈도우 문자열 함수

  • CompareString()   첫번째 인자는 GetThreadLocale() 호출후 값을 파라미터로 넘겨줌
  • CompareStringOrdinal()  은 파일명, 경로명, 레지스트리 키/값, XML요소/특성 을 비교하는데 사용함.

unicode와 ansi 문자열 변경

  • MultiByteToWideChar()
  • WideCharToMultiByte()
반응형