char*和wchar*转换多字节字符串与UNICODE字符串转换

 使用MultiByteToWideChar 和  WideCharToMultiByte 函数

 //多字节字符转为宽字符

 char st[20] = {"多字节字符串!"};

 DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, st, -1, NULL, 0);
 wchar_t *pwText=new wchar_t[dwNum];
 if(!pwText)
 {
  delete []pwText;
 }
    MultiByteToWideChar (CP_ACP, 0, st, -1, pwText, dwNum);
   

  delete []pwText;
 

//宽字符转为多字节字符的代码如下:  
  wchar_t wText[20] = {L"宽字符!"};
  DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE);
  char *psText;
  psText = new char[dwNum];
  if(!psText)
  {
   delete []psText;
  }
  WideCharToMultiByte (CP_OEMCP,NULL,wText,-1,psText,dwNum,NULL,FALSE);

  delete []psText;


使用mbstowcs_s 和 wcstombs_s 函数

  // 多字节字符串转换成宽字节字符串

      char *orig = "Hello, World!";
    cout << orig << " (char *)" << endl;

    size_t origsize = strlen(orig) + 1;
    const size_t newsize = 100;
    size_t convertedChars = 0;
    wchar_t wcstring[newsize];
    mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
    wcscat_s(wcstring, L" (wchar_t *)");
    wcout << wcstring << endl;

 

  // 宽字节字符串转换成多字节字符串

    wchar_t *orig = L"Hello, World!";
    wcout << orig << L" (wchar_t *)" << endl;

    size_t origsize = wcslen(orig) + 1;
    const size_t newsize = 100;
    size_t convertedChars = 0;
    char nstring[newsize];
    wcstombs_s(&convertedChars, nstring, origsize, orig, _TRUNCATE);
    strcat_s(nstring, " (char *)");
    cout << nstring << endl;
 msdn上更详细描述

 http://msdn.microsoft.com/en-us/library/ms235631(VS.80).aspx

“char*和wchar*转换多字节字符串与UNICODE字符串转换”的更多相关文章 》


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值