Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

따..딱히 공부하려고 포스팅하는 건 아니니까..!

C++ 한글 문자열(유니코드) 본문

C/C++

C++ 한글 문자열(유니코드)

보즈리 2015. 10. 4. 22:55




아시다시피 아스키코드에서는 한글 문자열을 지원하지 않는다.

그렇다면 내가 한글문자열을 입출력하고 판별하고 싶을때에 어떻게 해야할까?


답은 유니코드(Wide Byte Character Set)이다.


유니코드에 대한 설명을 조금 하자면,

알파벳은 1바이트지만 다른 문자들은 2바이트인 경우가 있다. 

그렇기 때문에 아스키코드에서는 약간의 한계가 있었다. 

그래서 다른 문자열들을 지원하기 위해서 유니코드가 만들어졌다.





문자열의 자료형으로는 wchar_t을 사용하고, 사용법은 문자열 앞에 L을 붙이면 된다.


유니코드에서는 wchar_t 자료형을 사용하는것이 더 편리한데 그 이유를 예를 들어 설명해보겠다.


wchar_t* str = "zz가나다" 이라고 하자.

이 때, 각 배열공간에 들어있는 문자를 살펴보면,


str[0] = "z"

str[1] = "z"

str[2] = "가"

str[3] = "나"

str[4] = "다"

와 같이 문자가 들어가 있다.


만약 char형이었다면 8개의 배열공간이 할당되었을 것이다.

이와 같이 wchar_t는 메모리공간을 2바이트에 맞춰 효율적으로 사용하기 위해 만들어진 것이다.

유니코드는 2바이트 문자를 지원하기 위해 만들어졌다고 했으므로

wchar_t형을 사용하는 것이 더 효율적인 것이다.


그리고 유니코드도 아스키코드와 같이 코드표가 있는데 

한글 문자 코드의 범위는 44032~55199이다.

이 코드를 비교한다면 내가 입출력한 문자가 한글인지 아닌지 판별할 수 있다.

Comments