VS2008을 쓰니 이제 개발도 유니코드(Unicode)로 해야겠다. Unicode(wide character: wchar_t) 체계에서는 모든 문자(영어 혹은 한글)는 2 bytes라는 것만 기억하면 되겠다.
[유니코드 선언과 사용]
1. 문자변수 선언: TCHAR
2. 문자열변수 선언: LPCTSTR, LPTSTR, TCHAR *
3. 문자열 정의: _T("...")
4. 문자열 함수: _tcs...()
- _tcslen: 문자열의 요소갯수를 반환. ANSI인지 Unicode인지 구별하지 않고 사용한 문자열의 요소갯수(byte수가 아님)를 알려줌.
- 요수갯수는 문자열을 구성하는 요소들(char, TCHAR, or wchar_t)이 몇 개인가이고 byte수는 문자열이 차지하는 실제 메모리 공간의 수를 뜻함.
- sizeof(TCHAR): 문자의 byte수를 알려줌. ANSI이면 1 byte, Unicode이면 2 bytes.
- strlen: 문자열의 byte수를 반환함.
5. MBCS(Multi-Byte Character Set)와 Unicode의 변환
- MBCS to Unicode: mbstowcs(...) or MultiByteToWideChar(...)
- Unicode to MBCS: wcstombs(...) or WideCharToMultiByte(...)
- USES_CONVERSION 선언후 A2W(...) or W2A(...) 사용
[유니코드 함수]
1. 유니코드를 지원하지 않는 함수: 이 함수 입력은 반드시 ASCII가 되어야 함, _T("...")로 정의하면 안 됨
- GetProcAddress()
[참고문헌]
[2] M. Dunn, "The complete guide to C++ strings, part I - Win32 character encodings," Code Project, 2002.
[3] M. Dunn, "The complete guide to C++ strings, part II - string wrapper classes," Code Project, 2002.
댓글 없음 :
댓글 쓰기
욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.