博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多字符与宽字符相互之间的转换
阅读量:6720 次
发布时间:2019-06-25

本文共 865 字,大约阅读时间需要 2 分钟。

  hot3.png

//
wstring ת string
string
ws2s(const wstring &ws)
{
    string curlocale = setlocale(LC_ALL, NULL);
    setlocale(LC_ALL, "chs");
    const wchar_t *_Source = ws.c_str();
    size_t _Dsize = 2 * ws.size() + 1;
    char *_Dest = new char[_Dsize];
    memset(_Dest, 0, _Dsize);
    wcstombs(_Dest, _Source, _Dsize);
    string result = _Dest;
    delete[] _Dest;
    setlocale(LC_ALL, curlocale.c_str());
    return result;
}
//string ת wstring
wstring
s2ws(const string &s)
{
    string curLocale = setlocale(LC_ALL, NULL);
    setlocale(LC_ALL, "chs");
    const char *_Source = s.c_str();
    size_t _Dsize = 2 * s.size() + 1;
    wchar_t *_Dest = new wchar_t[_Dsize];
    memset(_Dest, 0, _Dsize);
    mbstowcs(_Dest, _Source, _Dsize);
    wstring result = _Dest;
    delete[] _Dest;
    setlocale(LC_ALL, curLocale.c_str());
    return result;

}

采取wstring与string来做的主要原因是防止内存泄漏,让wstring与string自己管理自己的内存空间。

转载于:https://my.oschina.net/iamgk/blog/118841

你可能感兴趣的文章
app客户端测试
查看>>
nodejs渐入佳境[23]-hash函数
查看>>
Big Data Integration with Hadoop: A Q&A Spotlig...
查看>>
【062有新题】OCP 12c 062出现大量之前没有的新考题-16
查看>>
触手TV下载|触手TVapp下载
查看>>
PDF文件如何修改,PDF怎么添加文本高亮
查看>>
个人学习分享
查看>>
2019年4月份整理的Unity3D 20个实用插件-免费下载
查看>>
达飞控股不断践行新时代企业责任
查看>>
linux中Find命令的使用
查看>>
大链表数据去重的办法
查看>>
上帝美好的应许
查看>>
用shell统计局域网内的以用IP+MAC地址和未使用的IP
查看>>
静态ARP缓存表
查看>>
我的友情链接
查看>>
ssh实现Linux主机间的远程文件传输
查看>>
迁移windows server 2003 DNS功能服务器到windows server 2008 R2
查看>>
软件设计的23中设计模式
查看>>
gitosis 配置
查看>>
误删除表空间的解决办法(造成ORA-01033:
查看>>