C++中怎么将WCHAR字符串转换成CHAR字符串?

最好方法简单一点~... 最好方法简单一点~ 展开
 我来答
爱教育爱学习
高粉答主

2019-10-29 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112734

向TA提问 私信TA
展开全部

C++中将WCHAR字符串转换成CHAR字符串:

#include<comdef.h>//youwillneedthis

constWCHAR*wc=L"HelloWorld";

_bstr_tb(wc);

constchar*c=b;

printf("Output:%s\n",c);

扩展资料

char转wchar

constwchar_t*GetWC(constchar*c)

{

constsize_tcSize=strlen(c)+1;

wchar_t*wc=newwchar_t[cSize];

mbstowcs(wc,c,cSize);

returnwc;

}

hevinn
2018-05-11 · TA获得超过102个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:86.7万
展开全部

字符转换的几个问题思考

划红线的句子可要慎重啊!

这个转换绝对没有想象的那么简单:

首先你这个转换需不需要跨平台?

其次你这个转换考虑不考虑效率和代码大小?

再次你这个转换要处理的对象:英文?汉字?英文+汉字?英文+汉字+日语+火星文?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
推荐于2017-11-28 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450131
专业C/C++软件开发

向TA提问 私信TA
展开全部
#include <comdef.h>  // you will need this
const WCHAR* wc = L"Hello World" ;
_bstr_t b(wc);
const char* c = b;
printf("Output: %s\n", c);
USES_CONVERSION;
WCHAR* wc = L"Hello World" ;char* c = W2A(wc);
char output[256];
WCHAR* wc = L"Hellow World" ;
sprintf(output, "%ws", wc );

三种方法都可以.

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-22
展开全部
C++标准中,wchar_t是宽字符类型,每个wchar_t类型占2个字节,16位宽。汉字的表示就要用到wchar_t 。char,我们都知道,占一个字节,8位宽。其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了。

wchar_t 转换为char 的代码如下:

有如下的wchar_t和char变量

wchar_t w_cn = '中';
char c_cn[2] = {'0'} ;

char *C2W(wchar_t w_cn , char c_cn[2])

{

//following code convert wchar to char
c_cn[0] = w_cn >> 8 ;
c_cn[1] = w_cn ;
c_cn[2] = '\0';

return c_cn ;

}

其中需要注意的是一个16位的wchar_t需要用两个8位的char来存储之。我们可以发现另外一个问题,wchar_t的高位字节应该存储在char数组的低位字节。(这里没有仔细研究了,觉得怪怪的)。

这是完成了wchar_t到char的转化
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式