string、wstring、UTF-8、UTF-16、UTF-32之间转换
//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);
}
string、wstring、UTF-8、UTF-16、UTF-32之间转换相关推荐
- boost库学习随记五 Boost.Locale 之字符转换 gbk utf8 big5 string wstring等
Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...
- Boost.Locale 之字符转换 gbk utf8 big5 string wstring等
Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...
- ASP.Net中MD5加密-16位32位
public string md5(string str,int code) { if(code==16) //16位MD5加密(取32位加密的9~25字符) { return System.Web. ...
- .NET生成常用16、32位MD5加密的两种方法
//MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...
- string wstring
摘自:stackoverflow string? wstring? std::string is a basic_string templated on a char, and std::wstrin ...
- jmeter-Java关于MD5加密方法 以及16位32位互转
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...
- js实现md5加密,可以加密成16位或32位
js实现md5加密,可以加密成16位或32位 md5在线加密工具 js实现md5加密 加密成16位 加密成32位 md5在线加密工具 md5在线加密工具,321在线工具站 https://www.32 ...
- 16位/32位中断机制比較
16位/32位中断机制比較 原理: 16位中断机制:使用中断向量表 32位中断机制:使用中段描写叙述符表IDT 位置: 中断向量表的位置是固定的,位于内存的開始0x00000 中断向量符表位置不固定, ...
- 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
有不少人问到: flash连接CPU时,根据不同的数据宽度,比如16位的NOR FLASH (A0-A19),处理器的地址线要(A1-A20)左移偏1位.为什么要偏1位? 从软件和CPU的角度而言,一 ...
最新文章
- python读取中文-python读取中文txt文本
- python单下划线和双下线的区别
- 在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况
- eclipse常用快捷键汇总
- 简述C# XML解析方法的特点及应用
- 数据结构---前序和中序遍历的二叉树序列还原二叉树
- (转)Hibernate关联映射——对象的三种关系
- 搜索引擎的那些事(中文分词)
- Laravel 生态圈
- 文本对比工具google-diff-match-patch
- wpf自己画表盘_练手WPF(一)——模拟时钟与数字时钟的制作(上)
- Tomcat8+Redis集群解决会话共享
- 家庭局域网网站服务器,1000元打造家庭局域网
- 苹果发布无线充新专利,苹果Find My技术成为近几年苹果的重要创新
- macOS下载【转载】
- 大四会计转码 初学c语言的心路历程
- “不能read和written”的关键因素—内存
- 手机投屏不是全屏怎么办_手机投屏win10怎么退出全屏详细图文教程
- 数字签名与数字证书技术简介(三)
- 编译ffmpeg+dl等库