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 |