static std::string wcs_to_mbs(std::wstring const& str, std::locale const& loc)
{
typedef std::codecvt<wchar_t, char, std::mbstate_t> codecvt_t;
std::codecvt<wchar_t, char, std::mbstate_t> const& codecvt = std::use_facet<codecvt_t>(loc);
std::mbstate_t state = std::mbstate_t();
std::vector<char> buff((str.size() + 1) * codecvt.max_length());
wchar_t const* in_next = str.c_str();
char* out_next = &buff[0];
codecvt_t::result r = codecvt.out(state, str.c_str(), str.c_str() + str.size(), in_next, &buff[0], &buff[0] + buff.size(), out_next);
return std::string(&buff[0]);
}


static std::string utf8StringToUnicodeString(std::string UTF8String)
{
wchar_t strUnicode[256] = {0,};
char    strMultibyte[256] = {0,};
strcpy_s( strMultibyte,256,(UTF8String.c_str()));
int nLen = MultiByteToWideChar(CP_UTF8, 0, strMultibyte, strlen(strMultibyte), NULL, NULL);
MultiByteToWideChar(CP_UTF8, 0, strMultibyte, strlen(strMultibyte), strUnicode, nLen);
std::locale loc("KOR");
return wcs_to_mbs(strUnicode,loc);
}

 

사용법

utf8StringToUnicodeString(String형 UTF-8  문자열)

String형으로 유니코드 문자열 반환

'C,C++' 카테고리의 다른 글

MFC와 MFC를 사용하지 않는 프로그램 차이  (0) 2013.03.16
공유메모리 영역 설정  (0) 2013.03.10
윈도우 OS,윈도우 생성과,처리  (0) 2012.12.31
예외처리  (0) 2012.11.24
템플릿  (0) 2012.11.22

+ Recent posts