C++宽字符与普通字符的转换实例详解

发布时间 - 2026-01-11 01:53:52    点击率:

C++宽字符与普通字符的转换实例详解

把字符串转换成宽字符串,

实例代码:

wstring string2Wstring(string sToMatch) 
{   
#ifdef _A_WIN 
  int iWLen = MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), 0, 0 ); // 计算转换后宽字符串的长度。(不包含字符串结束符) 
  wchar_t *lpwsz = new wchar_t [iWLen + 1]; 
  MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), lpwsz, iWLen ); // 正式转换。 
  lpwsz[iWLen] = L'/0';  
  wstring wsToMatch(lpwsz); 
  delete []lpwsz; 
#elif _A_LINUX 
  setlocale( LC_CTYPE, "" ); // 很重要,没有这一句,转换会失败。 
  int iWLen = mbstowcs( NULL, sToMatch.c_str(), sToMatch.length() ); // 计算转换后宽字符串的长度。(不包含字符串结束符) 
  wchar_t *lpwsz = new wchar_t[iWLen + 1]; 
  int i = mbstowcs( lpwsz, sToMatch.c_str(), sToMatch.length() ); // 转换。(转换后的字符串有结束符) 
  wstring wsToMatch(lpwsz); 
  delete []lpwsz; 
#endif 
  return wsToMatch; 
} 
//把宽字符串转换成字符串,输出使用 
string wstring2string(wstring sToMatch) 
{   
#ifdef _A_WIN 
  string sResult; 
  int iLen = WideCharToMultiByte( CP_ACP, NULL, sToMatch.c_str(), -1, NULL, 0, NULL, FALSE ); // 计算转换后字符串的长度。(包含字符串结束符) 
  char *lpsz = new char[iLen]; 
  WideCharToMultiByte( CP_OEMCP, NULL, sToMatch.c_str(), -1, lpsz, iLen, NULL, FALSE); // 正式转换。 
  sResult.assign( lpsz, iLen - 1 ); // 对string对象进行赋值。 
  delete []lpsz; 
#elif _A_LINUX 
  int iLen = wcstombs( NULL, sToMatch.c_str(), 0 ); // 计算转换后字符串的长度。(不包含字符串结束符) 
  char *lpsz = new char[iLen + 1]; 
  int i = wcstombs( lpsz, sToMatch.c_str(), iLen ); // 转换。(没有结束符) 
  lpsz[iLen] = '/0'; 
  string sResult(lpsz); 
  delete []lpsz; 
#endif 
  return sResult; 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C++宽字符与普通字符的转换  # C++宽字符与普通字符  # C++ 字符串去重排序实例代码  # 浅谈c++ 字符类型总结区别wchar_t  # char  # WCHAR  # C++中输出十六进制形式的字符串  # c++中数字与字符串之间的转换方法(推荐)  # C++统计中英文大小写字母、数字、空格及其他字符个数的方法  # C++实现从输入中读取字符串  # C++计算每个字符出现的次数  # 不包含  # 转换成  # 这一  # 希望能  # 很重要  # 谢谢大家  # iWLen  # int  # MultiByteToWideChar  # wchar_t  # lpwsz  # size  # CP_ACP  # c_str  # brush  # cpp  # class  # strong  # pre  # wstring 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 require机制详解及实例代码  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  大连 网站制作,大连天途有线官网?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在阿里云购买域名并搭建网站?  JavaScript常见的五种数组去重的方式  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  公司门户网站制作流程,华为官网怎么做?  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  原生JS获取元素集合的子元素宽度实例  音乐网站服务器如何优化API响应速度?  使用spring连接及操作mongodb3.0实例  php json中文编码为null的解决办法  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  深圳网站制作培训,深圳哪些招聘网站比较好?  青岛网站建设如何选择本地服务器?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在阿里云通过域名搭建网站?  如何彻底卸载建站之星软件?  手机软键盘弹出时影响布局的解决方法  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  如何快速搭建高效服务器建站系统?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何快速上传建站程序避免常见错误?  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Android使用GridView实现日历的简单功能  如何快速搭建高效WAP手机网站?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何处理表单验证?(Requests代码示例)  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Bootstrap CSS布局之列表  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  如何实现建站之星域名转发设置?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  利用 Google AI 进行 YouTube 视频 SEO 描述优化  零服务器AI建站解决方案:快速部署与云端平台低成本实践  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】