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