ASCII code, Unicode, and Multi-byte
2
• C, C++ 등을 기반으로 하는 윈도우 프로그래밍은 기본적으로 1byte(8bit)의 ASCII code character set 을 사용했다.
• 하지만, 영어권이 아닌 국가에서도 프로그래밍을 개발을 수행할 때, 해당 국가의 언어를 0~127로 표현되는 ASCII 코드로 표현이 불가능!
• 다양한 문화권의 언어를 표현하기 위하여 2byte에 언어를 표현할 수 있는 Unicode를 사용하게 됨.
• 현재는 대부분의 언어가 Unicode를 디폴트로 설정하고 Multi-byte를 추가로 제공한다
• 문제점) 기존의 ASCII 코드에 맞게 표현된 문자 코드, 함수 등과의 호환성 문제가 발생!
Default character set in VS2015 (1/2)
3
• Solution Explorer에서,
• 프로젝트 네임(first_project)에서 오른쪽 마우스 클릭
• 팝업창의 하단에서 properties 선택
Default character set in VS2015 (2/2)
4
ASCII Character set
5
• Only English 1byte!
• char test[15] = “test”;
t e s t \0
Unicode Character set
6
• Korean, English 2byte
• wchar test[15] = L“연습 test”;
연 습 \0 t \0 e \0 s \0 t \0 \0
2byte 2byte
Multi-byte character set
7
• Korean 2byte, English 1byte
• char test[15] = “연습 test”;
연 습 t e s t \0
2byte
모든 문자 집합을 지원하는 코드 작성
8
• 유니코드, 멀티바이트에 상관 없이 문자를 컴퓨터가 설정된 character set에 맞게 코드가 수행되는 자료형
을 제공
TCHAR data type
TCHAR를 이용하여 선언한 데이터 타입은,
멀티바이트로 설정되었으면 코드에서 내부적으로 char로 변환
유니코드로 설정되었으면 wchar로 변환
#include <TCHAR.H>
// 본인의 코드의 상단에 반드시 헤더를 추가함TCHAR str[15] = _T(“연습 test”); char str[15] = “연습 test”;
wchar str[15] = L“연습 test”;
Multi-byte
Unicode // _T 는 매크로
문자열 data types
9
LPSTR char * ANSI 코드 문자열 포인터
LPCSTR Const char * ANSI 코드 문자열 포인터 상수
LPTSTR TCHAR * TCHAR 문자열 포인터
LPCTSTR Const TCHAR * TCHAR 문자열 포인터 상수
LPWSTR WCHAR * 유니코드 문자열 포인터
LPCWSTR Const WCHAR * 유니코드 문자열 포인터 상수
• LP : Long Pointer
• C : Const
• T : TCHAR
• W: WCHAR
• STR : 문자열
참고: 핵심 api로 배우는 윈도우 프로그래밍