现在的位置: 首页 > 综合 > 正文

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

2014年01月14日 ⁄ 综合 ⁄ 共 1053字 ⁄ 字号 评论关闭

#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);
}

抱歉!评论已关闭.