문자열을 다루다 보면 인코딩을 변경해야 하는 일이 발생한다.
전통적인 방식의 ansi 와 멀티바이트 방식인 유니코드, utf-8 등등 다양한 인코딩 방식이 존재하지만
이들간 변환이 간단하지는 않다
(std::string이 아닌경우 C++ 에서 ansi 는 char*로, 유니코드는 wchar_t*로, utf-8은 char* 형으로 사용한다.)
또한 ansi에서 utf-8로는 다이렉트 변환도 안되서 유니코드로 변경했다 다시 바꿔주는 등 불편함이 많다.
그래서 MS에서 사용하기 편하게 정의해둔 기능을 사용하기로 하자.
우선 아래 기능을 사용하기 위해서는 atlstr.h 를 추가해 줘야 한다.
이 헤더를 추가하면 MFC 사용 안하고도 CString도 사용 가능하다.
대략적인 사용법은 아래와 같다.
wstring strUni = CA2W("멀티바이트를 유니코드로 변환");
string strMulti = CW2A(L"유니코드를 멀티바이트로 변환");
string strUTF8 = CW2A(L"유니코드를 UTF8로변환",CP_UTF8);
// string에서 포인터 얻어오는게 c_str()이듯.
// CA2W나 CW2A에서 포인터 얻어오는건 m_psz 이다..
// 그리고 CA2W CW2A는 기본적으로 CString 즉 (CAtlString)에 기반을 두고 고 있기때문에
// CString를 사용할때 가장 빠른다!!.
// 만약 멀티 플레폼을 기준으로 한다면 CA2W는 사용 못함!
'Programming > C, C++, MFC' 카테고리의 다른 글
std::vector 에서 argmax, argmin 값을 계산하자. (0) | 2021.07.15 |
---|---|
비주얼 스튜디오 버전 정리 (VS/VC) (0) | 2021.05.28 |
특정주소가 폴더(디렉토리)인지 파일인지 확인하자 (0) | 2021.02.04 |
MFC Dialog 에서 enter, esc 동작을 제어하자 (0) | 2020.11.10 |
하위폴더 포함, 폴더 전체를 복사하자 (0) | 2020.11.10 |