C++ 中字符串操作--宽窄字符转换的实例详解

发布时间 - 2026-01-11 03:16:54    点击率:

C++ 中字符串操作--宽窄字符转换的实例详解

MultiByteToWideChar

 int MultiByteToWideChar(
  _In_   UINT  CodePage,
  _In_   DWORD dwFlags,
  _In_   LPCSTR lpMultiByteStr,
  _In_   int  cbMultiByte,
  _Out_opt_ LPWSTR lpWideCharStr,
  _In_   int  cchWideChar
 );
 参数描述:
  CodePage:常用CP_ACP、CP_UTF8
  dwFlags:0
  lpMultiByteStr [in]:
    指向待转换字符串。
  cbMultiByte [in]:
    lpMultiByteStr "以字节规格计算"的大小。
    设置 0,函数失败;
    设置 -1,函数处理整个字符串,包括\0字符串,导致宽字符串也会带有\0字符,返回的长度也包含\0的长度;
    设置 >0,根据是否包含\0,返回的结果也会相应调整。
  lpWideCharStr [out, optional]:
    指向接收宽字符串的缓冲区。
  cchWideChar [in]:
    lpWideCharStr 指向的缓冲区"以字符规格计算"的大小。
    设置 0,使 lpWideCharStr 无效,并使得函数返回所需"以字符规格计算"的大小。

Code:

 int requiredBufSize = MultiByteToWideChar(CP_ACP, 0, src, -1, NULL, 0);
 if (requiredBufSize > 0)
 {
   WCHAR *pBuffer = new WCHAR[requiredBufSize];
   MultiByteToWideChar(CP_ACP, 0, src, -1, pBuffer, requiredBufSize);
 }

WideCharToMultiByte

 int WideCharToMultiByte(
  _In_   UINT  CodePage,
  _In_   DWORD  dwFlags,
  _In_   LPCWSTR lpWideCharStr,
  _In_   int   cchWideChar,
  _Out_opt_ LPSTR  lpMultiByteStr,
  _In_   int   cbMultiByte,
  _In_opt_ LPCSTR lpDefaultChar,
  _Out_opt_ LPBOOL lpUsedDefaultChar
 );
 参数描述:
  lpDefaultChar [in, optional]:NULL
  lpUsedDefaultChar [out, optional]:NULL
  其它参数参考 MultiByteToWideChar

Code:

 int requiredBufSize = WideCharToMultiByte(CP_ACP, 0, src, -1, NULL, 0, NULL, NULL);
 if (requiredBufSize > 0)
 {
   char *pBuffer = new char[requiredBufSize];
   WideCharToMultiByte(CP_ACP, 0, src, -1, pBuffer, requiredBufSize, NULL, NULL);
 }

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C++  # 字符串  # 字符串的操作  # 字符串的转换  # C/C++宽窄字符转换与输出的多种实现方法  # 也会  # 如有  # 所需  # 希望能  # 谢谢大家  # 疑问请  # LPCSTR  # lpMultiByteStr  # dwFlags  # DWORD  # cbMultiByte  # lpWideCharStr  # cchWideChar  # LPWSTR  # class  # brush  # pre  # strong  # MultiByteToWideChar  # UINT 


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


相关推荐: Laravel观察者模式如何使用_Laravel Model Observer配置  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  lovemo网页版地址 lovemo官网手机登录  如何在阿里云服务器自主搭建网站?  javascript基本数据类型及类型检测常用方法小结  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  如何彻底删除建站之星生成的Banner?  微信小程序 canvas开发实例及注意事项  Firefox Developer Edition开发者版本入口  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  在线制作视频网站免费,都有哪些好的动漫网站?  利用vue写todolist单页应用  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  C#如何调用原生C++ COM对象详解  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何实现用户注册和登录?(Auth脚手架指南)  大连 网站制作,大连天途有线官网?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何生成URL和重定向?(路由助手函数)  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  高防服务器租用如何选择配置与防御等级?  七夕网站制作视频,七夕大促活动怎么报名?  如何在Windows服务器上快速搭建网站?  如何在阿里云部署织梦网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何在云指建站中生成FTP站点?  EditPlus中的正则表达式 实战(2)  Bootstrap整体框架之JavaScript插件架构  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何快速上传建站程序避免常见错误?  Python文本处理实践_日志清洗解析【指导】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  如何在阿里云完成域名注册与建站?  如何快速启动建站代理加盟业务?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  怎么用AI帮你设计一套个性化的手机App图标?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何在阿里云高效完成企业建站全流程?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程