wchar_t*转char*(宽字节字符串转多字节字符串)

#include<stdlib.h>


void wchar2char()//宽字节字符串转多字节字符串
{
      //该方法只能转英文和数字
int      i;
wchar_t *pwchello = L"Hello, world.";
int nLen = wcslen(pwchello)+1;//13+1
char    *pmbbuf   = (char *)malloc(nLen*sizeof(char));
printf( "Convert wide-character string:\n" );
i = wcstombs( pmbbuf, pwchello, nLen );
printf( "转换出的多字节字符串长度: %u\n", i );
printf( "转换出的多字节字符串: %s\n\n", pmbbuf );

free(pmbbuf);
}

输出结果:

Convert wide-character string:

  转换出的多字节字符串长度:13

  转换出的多字节字符串:Hello, world.


//转中文和英文数字结合

void wchar2char()//宽字节字符串转多字节字符串
{
int      i;
   
wchar_t *pwchello = L"你好吗?abcd1";//
int nLen = wcslen(pwchello)*2+1;//9*2+1

char    *pmbbuf   = (char *)malloc(nLen*sizeof(char));
printf( "Convert wide-character string:\n" );
setlocale(LC_ALL,"");//设置本地编码格式param2为空,默认取当前编码格式ANSI

       /*

        setlocale(LC_ALL,".936");//设置当前编码格式为ANSI

        或者setlocale(LC_ALL, "zh_CN.GBK");

       setlocale(LC_ALL,"65001");/设置当前编码格式为UTF-8

        或者setlocale(LC_ALL, "zh_CN.UTF-8");

     C标准库的setlocale()用法笔记

   http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.html

*/

i = wcstombs( pmbbuf, pwchello, nLen );
printf( "转换出的多字节字符串长度: %u\n", i );
printf( "转换出的多字节字符串: %s\n\n", pmbbuf );

free(pmbbuf);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值