基于 C++ Boost locale 库,将 utf8,utf16,utf32 字符集互相转换

学习记录,便于查询

u8string, u16string, u32string 由 C++20 标准提供支持

学习自
https://blog.csdn.net/liangzhao_jay/article/details/78788766

头文件

#include // UTF8与UTF16互相转换
u8string	conv_utf16_to_utf8(u16string s);
u16string 	conv_utf8_to_utf16(u8string s);// UTF16与UTF32互相转换
u32string 	conv_utf16_to_utf32(u16string s);
u16string 	conv_utf32_to_utf16(u32string s);// UTF8与UTF32互相转换
u8string	conv_utf8_to_utf32(u32string s);
u32string 	conv_utf32_to_utf8(u8string s);// 同类型不同类型名强制转换// 如果明确知道string内容为UTF8字符集,使用该函数将其强制转换为u8string
u8string	cast_u8string(string s);
string		cast_string(u8string s);// 如果明确知道wstring内容为UTF16字符集,使用该函数将其强制转换为wstring
u16string 	cast_u16string(wstring s);
wstring	 	cast_wstring(u16string s);

函数定义

#include 
#include u8string conv_utf16_to_utf8(u16string s)
{return boost::locale::conv::utf_to_utf(s.c_str());
}u16string conv_utf8_to_utf16(u8string s)
{return boost::locale::conv::utf_to_utf(s.c_str());
}u32string conv_utf16_to_utf32(u16string s)
{return boost::locale::conv::utf_to_utf(s.c_str());
}u16string conv_utf32_to_utf16(u32string s)
{return boost::locale::conv::utf_to_utf(s.c_str());
}u8string conv_utf8_to_utf32(u32string s)
{return boost::locale::conv::utf_to_utf(s.c_str());
}u32string conv_utf32_to_utf8(u8string s)
{return boost::locale::conv::utf_to_utf(s.c_str());
}u8string cast_u8string(string s)
{return u8string((char8_t*)s.data(), s.size());
}string cast_string(u8string s)
{return string((char*)s.data(), s.size());
}u16string cast_u16string(wstring s)
{return u16string((char16_t*)s.data(), s.size());
}wstring cast_wstring(u16string s)
{return wstring((wchar_t*)s.data(), s.size());
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部