VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 606|回复: 2

[求助] wchar_t转char

[复制链接]
39_avatar_middle
在线会员 发表于 2018-4-11 19:14:42 | 显示全部楼层 |阅读模式
3驿站币
想要wchar_t转char,但是网上都是wchar_t*转char*的。
有没有wchar_t转char的函数呢

最佳答案

查看完整内容

如果 wchar_t 是字母或者数字之类的倒也好说,因为 wchar_t 实际上就是 2个 char,例如 0a 转换成 char 就是字符 a,但是如果 wchar_t 中的两个字节都有东西,比如是个汉字,那么此时转到 char 的话一个char字符是表示不下的,所以这个时候就没办法将 一个 wchar_t 转换成一个 char 了,所以一般都是 wchar_t * 转换成 char *,楼主明白了吗?




上一篇:mfc进程问题
下一篇:win7程序提权
01_avatar_middle
online_admins 发表于 2018-4-11 19:14:43 | 显示全部楼层
如果 wchar_t 是字母或者数字之类的倒也好说,因为 wchar_t 实际上就是 2个 char,例如 0a 转换成 char 就是字符 a,但是如果 wchar_t 中的两个字节都有东西,比如是个汉字,那么此时转到 char 的话一个char字符是表示不下的,所以这个时候就没办法将 一个 wchar_t 转换成一个 char 了,所以一般都是 wchar_t * 转换成 char *,楼主明白了吗?
29_avatar_middle
online_vip 发表于 2018-4-11 20:31:56 | 显示全部楼层
wchar_t   转为  char
使用函数 WideCharToMultiByte(),此函数把宽字符串转换成指定的新的字符串,如ANSI 等,新字符串不必是多字节字符集。
  1. wchar_t* pwszUnicode = L"Holle";  //wcslen(pwsUnicode)=5

  2. int iSize;
  3. char* pszMultiByte;

  4. //返回接受字符串所需缓冲区的大小,已经包含字符结尾符'\0'
  5. iSize = WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, NULL, 0, NULL, NULL); //iSize =wcslen(pwsUnicode)+1=6
  6. pszMultiByte = (char*)malloc(iSize*sizeof(char)); //不需要 pszMultiByte = (char*)malloc(iSize*sizeof(char)+1);
  7. WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, pszMultiByte, iSize, NULL, NULL);
复制代码


char  转为  wchar_t
使用函数 MultiByteToWideChar(),此函数把多字节字符串转换成宽字符串(Unicode),待转换的字符串并不一定是多字节的。
  1. char* pszMultiByte = "Holle";  //strlen(pwsUnicode)=5
  2. int iSize;
  3. wchar_t* pwszUnicode ;


  4. //返回接受字符串所需缓冲区的大小,已经包含字符结尾符'\0'
  5. iSize = MultiByteToWideChar(CP_ACP, 0, pszMultiByte , -1, NULL, 0); //iSize =wcslen(pwsUnicode)+1=6
  6. pwszUnicode = (wchar_t *)malloc(iSize*sizeof(wchar_t)); //不需要 pwszUnicode = (wchar_t *)malloc((iSize+1)*sizeof(wchar_t))
  7. MultiByteToWideChar(CP_ACP, 0, pszMultiByte , -1, pwszUnicode , iSize);
复制代码
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-8-18 07:53

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表