댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
MFC
2006.04.14 11:41
[C] Unicode 사용에 대하여
조회 수 49170 댓글 0
[C]Unicode
(1) Unicode text와 문자열 Windows 98 API는 부분적으로 유니코드 문자열을 지원하였다. Windows 2000과 NT API는 유니코드와 ANSI 문자열을 지원한다. 그러나 Windows CE는 Unicode만 지원한다. MBCS : Multi-Byte Character String. 특수문자 다음에 나오는 문자는 서로 다른 문자체계의 문자임을 알려 주는 구분자로 사용. Unicode : Wide byte character 방식. ANSI 문자의 경우 상위 바이트는 NULL이 되며, 압축 알고리즘에서는 이 반복적으로 발생되는 NULL을 최적화한다. (2) 일반 문자열과 문자 데이터 유니코드 데이터 형인 wchar_t를 사용할 수도 있으나, tchar.h를 include 시키고, TCHAR 데이터형을 사용하여 definition에 따라 char나 wchar_t형으로 적절히 변환할 수 있다. #define _UNICODE // TCHAR을 wchar_t 형으로 대치 #define _MBCS // TCHAR을 char 형으로 대치 문자열 포인터는 LPSTR 데이터형 대신 LPTSTR 데이터형을 사용하여 definition에 따라 char *나 wchar_t * 형으로 적절히 변환할 수 있다. (3) 상수문자열 LPTSTR lpszStr = "My string"; // 문자열을 ANSI 문자열로 간주, // 데이터형 불일치로 에러 발생 LPTSTR lpszStr = _T("My string"); // _UNICODE가 정의되어 있으면 _T()는 유니코드 // 문자열 상수로 변환하고, _MBCS가 정의되어 있으면 // ANSI 문자열 상수로 변환한다. LPTSTR lpszStr = TEXT("My string"); // 상동 LPWSTR lpszStr = L("My string"); // 유니코트 문자열로 지정하는 매크로 함수 L() (4) 문자열 버퍼 길이 계산 #define _UNICODE TCHAR szBuffer[200]; // szBuffer의 크기는 400 bytes DWORD dwlen; dwlen = sizeof(szBuffer); // 400 bytes dwlen = sizeof(szBuffer) / sizeof(TCHAR); // 실제 저장 가능한 유니코드 문자 개수는 200개 (5) 표준 문자열 라이브러리 함수 표준 C 런타임 함수 strlen()에 해당하는 유니코드 함수는 wcslen()이지만, _tcslen()을 사용하면 definition 정의에 따라 컴파일시에 적절히 변환된다. 기능 ANSI 함수 유니코드 함수 일반 문자열 함수 ================================ ============ ============= ================== 문자열의 길이를 반환하는 함수 strlen() wcslen() _tcslen() 두 문자열을 접합하는 함수 strcat() wcscat() _tcscat() 문자열에서 문자를 찾는 함수 strchr() wcschr() _tcschr() 두 문자열을 비교하는 함수 strcmp() wcscmp() _tcscmp() 문자열을 복사하는 함수 strcpy() wcscpy() _tcscpy() 부분 문자열을 찾는 함수 strstr() wcsstr() _tcsstr() 문자열을 역순으로 저장하는 함수 strrev() _wcsrev() _tcsrev() ================================ ============ ============= ================== (6) ANSI 문자열과 Unicode 문자열 간의 변환 mbstowcs(WCHAR *des, char *src, int BufferSize) : Multi-Byte String을 Wide Character String(유니코드)으로 변환. wcstombs(char *des, WCHAR *src, int BufferSize) : Wide Character String(유니코드)을 Multi-Byte String으로 변환. Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5