wstring
- 여러 나라의 언어를 표현하기 위해 사용하는 전용 string이다.
- 한 문자를 표현하기 위해서 1byte가 아닌 2,3 그 이상의 byte를 사용하기 때문에 생기는 문제점을 해결하기 위해 사용한다.
- 예를들면 "홍길동" 을 입력받기 위해 char[3]을 만들면 "ㅎㅗㅇ" 한글자 밖에 받지 못한다.
- 출력할 때도 마찬가지다 홍을 표현하기 위해 0~2까지 출력해야한다.
- 이러한 이유로 윈도우 프로그래밍도 w__ 자료형을 쓴다.
- wstring 외에도 wchar_t 등등과 전용 메소드가 있으니 찾아보길 바란다.
- 프로젝트의 속성에 문자 집합이 기본은 "유니코드 문자 집합"으로 되어있다.
- 본인은 wstring이나 그런거 쓰기 싫다 하시는 사람은 "멀티바이트 문자 집합" 으로 바꾸고 string 사용하면 되겠다.
- 다만, 기존의 프로젝트의 유니코드 작업내역과 충돌이라던지, 프로젝트마다 세팅의 번거로움, 한글을 표현하기 위한 고통은 본인의 몫이니 배워서 쓰는 것이 마음 편하다.
- 이러한 문제를 해결하기 위해 나온게 T매크로다.
- TCHAR를 변수로 쓰면 멀티바이트에선 char, 유니코드에선 wchar_t로 인식한다.
사용법
#include <string>
#include <locale>
- string 헤더에 wstring이 들어있기 때문에 따로 #include <wstring>처럼 사용하지 않는다.
wcin.imbue(locale("korea"));
wcout.imbue(locale("korea"));
- 위에서 설명했듯 언어마다 해석하는 기준이 다르기 때문에 cin, cout 과정에서 들어오는 데이터를 한글로 인식해서 처리하겠다를 알려줘야한다.
std::locale::global(locale("korea"));
- 위와 같이 모든 곳의 처리를 한글로 지정하겠다 라고 할 수도 있다.
wcout << L"자연수를 입력해주세요" << endl;
- 문자를 사용할 땐 L을 붙여서 사용해야 한다.
- wcout은 cout의 w버전
- wcin도 마찬가지
'C++ > C++' 카테고리의 다른 글
[C++] 미리 컴파일된 헤더 (0) | 2022.11.14 |
---|---|
[C++] 멀티바이트, 유니코드 (0) | 2022.11.14 |
[C++] constexpr (0) | 2022.11.13 |
[C++] delete와 소멸자 ~class() (0) | 2022.10.13 |
[C++] 헤더 / 라이브러리에 관해 (1) | 2022.10.11 |