[C++] 유니코드 사용법

예전에 C에서 유니코드 문자를 사용하는 방법을 포스팅한 적이 있었는데,
이번에는 C++에서의 유니코드 사용법을 정리해보려 한다.
https://blog.naver.com/sssang97/220925182886

image c언어 유니코드 사용법.c언어는 기본적으로 유니코드가 아닌 아스키코드를 사용하기 때문에 한글 같은 문자들을 사용하려면 약...blog.naver.com

당연히 C++에서도 C의 방법을 사용할 수는 있다. 하지만 설마 고루하게 fprintf같은걸 쓸 생각인가?
C++에는 stream이라는 더 똑똑한 놈들이 있다. 그리고 일반적으로 출력 연습할때 쓰는 cout는 printf처럼 1바이트짜리 char만을 대상으로 정상적으로 작동하는 놈이다.

다행히도 C++의 기능들은 대부분 극단적인 수준까지 일반화되어있기 때문에 wchar_t를 대상으로 하며 동일한 방식으로 작동하는 wcout 등이 있다. C에서처럼 문자열을 처리하는 타입들의 경우 대부분 앞에 w를 붙이면 wchar_t를 처리하는 타입이 된다.

자 일단 locale을 깔지 않고 한글을 출력해보자

안나온다.

C에서처럼 로케일을 깔면?

나온다.

근데 C++에서는 저런 전역적인 C스타일의 로케일 선언 이외에도 한가지의 방법을 더 제공한다.
바로 C++전용 라이브러리인 에 있는 locale 객체를 이용하는 것이다.
그리고 스트림 객체들은 locale 객체를 받는 imbue라는 메소드를 갖고 있다. 이러면 부분적인 로케일 사용이 가능해진다.