//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之间转换相关推荐

  1. boost库学习随记五 Boost.Locale 之字符转换 gbk utf8 big5 string wstring等

    Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...

  2. Boost.Locale 之字符转换 gbk utf8 big5 string wstring等

    Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...

  3. ASP.Net中MD5加密-16位32位

    public string md5(string str,int code) { if(code==16) //16位MD5加密(取32位加密的9~25字符) { return System.Web. ...

  4. .NET生成常用16、32位MD5加密的两种方法

    //MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...

  5. string wstring

    摘自:stackoverflow string? wstring? std::string is a basic_string templated on a char, and std::wstrin ...

  6. jmeter-Java关于MD5加密方法 以及16位32位互转

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...

  7. js实现md5加密,可以加密成16位或32位

    js实现md5加密,可以加密成16位或32位 md5在线加密工具 js实现md5加密 加密成16位 加密成32位 md5在线加密工具 md5在线加密工具,321在线工具站 https://www.32 ...

  8. 16位/32位中断机制比較

    16位/32位中断机制比較 原理: 16位中断机制:使用中断向量表 32位中断机制:使用中段描写叙述符表IDT 位置: 中断向量表的位置是固定的,位于内存的開始0x00000 中断向量符表位置不固定, ...

  9. 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法

    有不少人问到: flash连接CPU时,根据不同的数据宽度,比如16位的NOR FLASH (A0-A19),处理器的地址线要(A1-A20)左移偏1位.为什么要偏1位? 从软件和CPU的角度而言,一 ...

最新文章

  1. python读取中文-python读取中文txt文本
  2. python单下划线和双下线的区别
  3. 在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况
  4. eclipse常用快捷键汇总
  5. 简述C# XML解析方法的特点及应用
  6. 数据结构---前序和中序遍历的二叉树序列还原二叉树
  7. (转)Hibernate关联映射——对象的三种关系
  8. 搜索引擎的那些事(中文分词)
  9. Laravel 生态圈
  10. 文本对比工具google-diff-match-patch
  11. wpf自己画表盘_练手WPF(一)——模拟时钟与数字时钟的制作(上)
  12. Tomcat8+Redis集群解决会话共享
  13. 家庭局域网网站服务器,1000元打造家庭局域网
  14. 苹果发布无线充新专利,苹果Find My技术成为近几年苹果的重要创新
  15. macOS下载【转载】
  16. 大四会计转码 初学c语言的心路历程
  17. “不能read和written”的关键因素—内存
  18. 手机投屏不是全屏怎么办_手机投屏win10怎么退出全屏详细图文教程
  19. 数字签名与数字证书技术简介(三)
  20. 编译ffmpeg+dl等库

热门文章

  1. AdPlayBanner:功能丰富、一键式使用的图片轮播插件
  2. snort的详细配置
  3. 将String转换成InputStream
  4. C语言二维数组中的指针问题
  5. 新的网站上线 linux视野
  6. java占位符填充_Java使用freemark生成word
  7. netty发送数据_看完这篇还不清楚Netty的内存管理,那我就哭了
  8. servlet获取不到Angular4 post过来的参数
  9. centos mysql 设置_CentOS下MySQL安装后配置和设置-阿里云开发者社区
  10. 在Scala中设置&()方法