VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 432|回复: 2

[求助] wchar_t转char

[复制链接]
39_avatar_middle
在线会员 535638819zsm 发表于 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 *,楼主明白了吗?




上一篇:构造数据
下一篇:win7程序提权

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

01_avatar_middle
online_admins admin 发表于 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 CDocking 发表于 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

本版积分规则

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

GMT+8, 2018-12-10 13:27

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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