多字節與寬字節之間的轉換

 

轉自http://www.vckbase.com/document/viewdoc/?id=1488
  1、函數 WideCharToMultiByte(),轉換 UNICODE 到 MBCS。

      LPCOLESTR lpw = L"Hello,你好";
      size_t wLen = wcslen( lpw ) + 1;  // 寬字符字符長度,+1表示包含字符串結束符
      
      int aLen=WideCharToMultiByte(  // 第一次調用,計算所需 MBCS 字符串字節長度
		CP_ACP,
		0,
		lpw,  // 寬字符串指針
		wLen, // 字符長度
		NULL,
		0,  // 參數0表示計算轉換後的字符空間
		NULL,
		NULL);
	
      LPSTR lpa = new char [aLen];
	
      WideCharToMultiByte(
		CP_ACP,
		0,
		lpw,
		wLen,
		lpa,  // 轉換後的字符串指針
		aLen, // 給出空間大小
		NULL,
		NULL);

      // 此時,lpa 中保存着轉換後的 MBCS 字符串
      ... ... ... ...
      delete [] lpa;

    2、函數 MultiByteToWideChar(),轉換 MBCS 到 UNICODE。使用範例:
      LPCSTR lpa = "Hello,你好";
      size_t aLen = strlen( lpa ) + 1;
      
      int wLen = MultiByteToWideChar(
		CP_ACP,
		0,
		lpa,
		aLen,
		NULL,
		0);
      
      LPOLESTR lpw = new WCHAR [wLen];
      MultiByteToWideChar(
		CP_ACP,
		0,
		lpa,
		aLen,
		lpw,
		wLen);
      ... ... ... ...
      delete [] lpw;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章