c++11 string 转ustring UTF-8 UTF-16 UTF32

落爺英雄遲暮 提交于 2019-12-09 13:56:29

#include <locale>
#include <codecvt>
#pragma warning(disable:4996)

//u8string to wstring
std::wstring utf8_to_wstring(const std::string& str)
{
    std::wstring_convert< std::codecvt_utf8_utf16<wchar_t> > strCnv;
    return strCnv.from_bytes(str);
}

//wstring to string
//wstring to u8string
std::string utf8_to_wstring(const std::wstring& str)
{
    std::wstring_convert< std::codecvt_utf8_utf16<wchar_t> > strCnv;
    return strCnv.to_bytes(str);

}

//wstring to string
std::string wstring_to_string(const std::wstring& str)
{
    std::wstring_convert< std::codecvt_utf8_utf16<wchar_t> > strCnv;
    return strCnv.to_bytes(str);
}

// utf-8 to utf16
std::u16string utf8_to_u16string(const std::string &str)
{
    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> strCnv; 
    return strCnv.from_bytes(str);
}
std::u32string utf8_utf32(std::string str)
{
     std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t >strCnv;
     return strCnv.from_bytes(str);
}

 

std::string u8string = wstring_to_string(L"我是好人");
    std::u16string u16 = utf8_to_u16string(u8string);
    std::u32string u32 = utf8_utf32(u8string);

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!