//string转wstring
std::wstring string_to_wstring(const std::string& str)
{
setlocale(LC_ALL, “”);
std::int64_t size = mbstowcs(NULL, str.c_str(), 0);
std::wstring w_str;
w_str.resize(size);
//算出代转wstring字节
mbstowcs(w_str.data(), str.c_str(), str.size());
return w_str;
//std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> conv(new std::codecvt<wchar_t, char, std::mbstate_t>(“CHS”));
// return conv.from_bytes(str);
}
//wstring to string
std::string wstring_to_string(const std::wstring& wstr)
{
setlocale(LC_ALL, “”);
//算出代转string字节
std::int64_t size = wcstombs(NULL, wstr.c_str(), 0);
std::string desrt;
desrt.resize(size);
wcstombs(desrt.data(), wstr.c_str(), size);
return desrt;
//方法任意选
//setlocale(LC_ALL, “”);
//std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
// return conv.to_bytes(wstr);
//std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> conv(new std::codecvt<wchar_t, char, std::mbstate_t>(“CHS”));
//return conv.to_bytes(str);
}
//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 wstring_to_utf8(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);
}
//utf16 to utf-8
std::string u16string_to_utf8(const std::u16string& str)
{
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> strCnv;
return strCnv.to_bytes(str);
}
//utf-8 to utf-32
std::u32string utf8_utf32(std::string str)
{
std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t >strCnv;
return strCnv.from_bytes(str);
}
//utf-32 to utf-8
std::string u32string_to_utf8(std::u32string str)
{
std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t >strCnv;
return strCnv.to_bytes(str);
}