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

来源:互联网 发布:java 图像编程实例库 编辑:程序博客网 时间:2024/05/22 15:33

 使用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

原创粉丝点击