문자셋 (Charset)의 종류와 특성
- SBCS(Single Byte Character Set)
- 문자를 표현하는데 1바이트
- 아스키 코드
- MBCS(Multi Byte Character Set)
- 한글 2바이트 영문 1바이트
- WBCS(Wide Byte Character Set)
- 문자를 표현 하는데 2바이트
- 유니코드
char str[] = "ABC한글"; sizeof(str); // 8 strlen(str); // 7 char str[] = "한글입니다" for(int i = 0 ; i < 5 ; i ++) fputc(str[i], stdout); //한글 for(int i = 0 ; i < 10 ; i ++) fputc(str[i], stdout); //한글입니다
WBCS - C 언어에서
- char 대신 wchar_t
- “ABC” 대신 L”ABC”
- e.g.) wchar_t str[ ] = L”ABC”;
모두 유니코드 기반으로 작성
int main(void){ wchar_t str[] = L"ABC"; int size = sizeof(str); 8 // strlen(str); // compile error int len = wcslen(str); // work! 3 wprintf(L"배열의 크기 : %d \n", size); wprintf(L"배열의 길이: %d \n", len); }
매개변수는?? - main → wmain

MBCS와 WBCS 동시지원
#include <windoews.h> 안에는
- Windows 정의 자료형
typedef char CHAR; typedef wchar_t WCHAR; --- #define CONST const typedef CHAR * LPSTR; typedef CONST CHAR * LPCSTR; typedef WCHAR * LPWSTR; typedef CONST WCHAR * LPCWSTR;
MBCS와 WBCS 동시 지원 매크로
#ifdef UNICODE typedef WCHAR TCHAR; typedef LPWSTR LPTSTR; typedef LPCWSTR LPCTSTR; #else typedef CHAR TCHAR; typedef LPSTR LPTSTR; typedef LPCS LPCSTR; #endif
#ifdef _UNICODE #define __T(x) L##x #else #define __T(x) x #define _T(x) __T(x) #define _TEXT(x) __T(x)
함수도 동시지원 매크로 있음 (windows.h)