코드/C++

[C++] string ↔ wstring 변환

야곰야곰+책벌레 2022. 2. 24. 14:49
728x90
반응형

 

 

How to convert wstring into string?

The question is how to convert wstring to string? I have next example : #include <string> #include <iostream> int main() { std::wstring ws = L"Hello"; std::string s( ws.begin...

stackoverflow.com

std::wstring s2ws(const std::string& str)
{
    using convert_typeX = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_typeX, wchar_t> converterX;

    return converterX.from_bytes(str);
}

std::string ws2s(const std::wstring& wstr)
{
    using convert_typeX = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_typeX, wchar_t> converterX;

    return converterX.to_bytes(wstr);
}

둘 다 가능하지만 치명적 이게도 한글은 깨진다.

4번 답변을 이용하면 한글에서도 가능하다.

std::string w2s(const std::wstring &var)
{
   static std::locale loc("");
   auto &facet = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc);
   return std::wstring_convert<std::remove_reference<decltype(facet)>::type, wchar_t>(&facet).to_bytes(var);
}

std::wstring s2w(const std::string &var)
{
   static std::locale loc("");
   auto &facet = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc);
   return std::wstring_convert<std::remove_reference<decltype(facet)>::type, wchar_t>(&facet).from_bytes(var);
}

잘된다.

 

728x90
반응형

'코드 > C++' 카테고리의 다른 글

libjpeg 사용하기  (0) 2022.08.23
[C++] 마우스 이벤트 후킹  (0) 2022.05.11
[C++] XMLLite를 이용한 XML 파일 읽어오기  (0) 2021.11.08
[C++] 3점을 지나는 외접원의 중심점 구하기  (0) 2021.04.20
[C++] Char의 형 변환  (0) 2021.04.20