自己寫unicode轉換ascii碼,wchar*到char*,unicodewchar

來源:互聯網
上載者:User

自己寫unicode轉換ascii碼,wchar*到char*,unicodewchar

對於ascii碼的char其實就是unicode碼wchar的首個位元組碼,

如wchar[20] = "qqqq"; 在記憶體中排碼其實是char的'q' '\0'這類,因此我們如果自己寫unicode碼轉換為ascii的char,只需要取其首位元組即可,如下本人寫了一個wchar到char的轉換的函數。由於代碼簡單,加上了記憶體泄露測試方式。

 

#include <stdio.h>#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>#include <tchar.h>#include <Windows.h>#ifdef _DEBUG#define new DEBUG_CLIENTBLOCK#endifchar* UnicodeToMultibyte(WCHAR *wStr){if (NULL != wStr){int nLen = wcslen(wStr);char *pStr = new char[nLen + 1];int i = 0;for (; i < nLen; ++i){(pStr)[i] = (char)*(wStr + i);}(pStr)[i] = '\0';printf("%s\n", pStr);return pStr;}return NULL;}int main(){_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);/*char *str = new char[100];*/WCHAR wStr[250] = L"qqqqqqqqqqqqq";char szTemp[250] = _T("wwwwwwwwwwwww");char* pTemp = UnicodeToMultibyte(wStr);strcpy(szTemp, pTemp);delete pTemp;//注意,小心記憶體泄露printf("%s\n", szTemp);return 0;}


當然也可以通過windows的轉換函式,這個msdn上有詳解就不解釋啦

 

char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  {  LPSTR pszOut = NULL;  if (lpwszStrIn != NULL)  {  int nInputStrLen = wcslen (lpwszStrIn);  // Double NULL Termination  int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  pszOut = new char [nOutputStrLen];  if (pszOut)  {  memset (pszOut, 0x00, nOutputStrLen);  WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  }  }  return pszOut;  }


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.