SBCS, MBCS, WBCS
SBCS ( Single Byte Character Set )
- 문자를 표현하는데 있어서 1바이트만 사용하는 방식.
- 대표적으로 아스키코드가 해당된다.
MBCS( Multi Byte Character Set )
문자를 표현하는데 있어서 다양한 바이트 수를 이용한다. (어떤 문자는 1바이트, 어떤문자는 2바이트)
ex) 한글은 2바이트 영어는 1바이트 처리.
MBCS는 SBCS를 포함하고있다.
유니코드는 MBCS에 포함되지 않는다.
WBCS( Wide Byte Character Set )
- 유니코드에 해당
- 모든 문자를 2바이트로 처리한다.
char(SBCS) => wchar_t(WBCS)
wchar_t는 typedef unsigned short wchar_t이다.
- "ABC" => L"ABC"
L""은 WBCS로 문자열을 처리해라, 라는 의미를 가진다. (Null도 2바이트 처리)
SBCS기반 문자열 조작 함수로 WBCS 문자를 조작할 수 없다.
strlen => wcslen
strcpy => wcscpy
strncpy => wcsncpy
strcat => wcscat
strncat => wcsncat
strcmp => wcscmp
strncmp => wcsncmp
printf => wprintf
scanf => wscanf
fgets => fgetws
fputs => fputws
예시.
#include <stdio.h>
#include <string.h>
int main()
{
wchar_t str[] = L"ABC";
int size = sizeof(str);
int len = wcslen(str);
printf("배열의 크기 : %d \n", size);
printf("문자열 길이 : %d \n", len);
return 0;
}
배열의 크기 : 8
문자열 길이 : 3
- 배열의 크기는 WBCS이기에 한 문자당 2Byte + NULL(2Byte) 포함 = 8바이트가 나온다.
- 문자열 길이는 보이는것과 같이 ABC = 3으로 나온다.
main, wmain
int main(int argc, char* argv[])
int wmain(int argc, w_char* argv[])
- main은 인자값이 넘어갈때 MBCS로 넘어간다.
- wmain은 인자값이 넘어갈때 WBCS로 넘어간다.
반응형
'기타' 카테고리의 다른 글
Unresolved reference: ext (0) | 2020.04.18 |
---|---|
Cannot add task 'clean' as a task with that name already exists. (0) | 2020.04.18 |
유클리드 호제법 (0) | 2020.04.04 |
초보자를 위한 AVISPA 간단 정리 (0) | 2019.12.11 |
네트워크 이중화 종류 (0) | 2019.07.16 |