C++中的標準庫函式,用於將多位元組編碼字元串轉換為寬字元編碼字元串,即將char*轉換成wchar_t*。
基本介紹
- 中文名:多位元組字元串轉換為寬字元字元串函式
- 外文名:mbstowcs_s
- 領域:計算機編程
- 程式語言:C++
1.函式描述,2.用法示例,
1.函式描述
功能:將寬字元編碼字元串轉換成多位元組編碼字元串。
頭檔案:#include <stdlib.h>。
函式原型:
errno_t __cdecl mbstowcs_s(size_t * _PtNumOfCharConverted, wchar_t * _DstBuf, size_t _SizeInWords, const char * _SrcBuf, size_t _MaxCount );
參數說明:
PtNumOfCharConverted:指向轉換後的字元串的長度加上結束符(單位wchar_t);
_DstBuf:指向轉換後的字元串首地址;
_SizeInWords:目的地址最大字空間大小(單位wchar_t);
_SrcBuf:源多位元組字元串首地址;
_MaxCount:最多可存入寬字元串緩衝中的字元個數,用於裁剪轉換後的寬字元串。
返回值:成功返回0, 失敗則返回失敗代碼。
2.用法示例
以下代碼編譯運行環境VC++2012+Debug+Win32。
#include <iostream>#include <locale.h>#include <string>using namespace std;wstring s2ws(const string& s){ size_t convertedChars=0; string curLocale=setlocale(LC_ALL,NULL); //curLocale="C" setlocale(LC_ALL,"chs"); const char* source=s.c_str(); size_t charNum=sizeof(char)*s.size()+1; wchar_t* dest=new wchar_t[charNum]; mbstowcs_s(&convertedChars,dest,charNum,source,_TRUNCATE); wstring result=dest; delete[] dest; setlocale(LC_ALL,curLocale.c_str()); return result;}int main(){ char* str="ABC我們"; setlocale(LC_ALL, "chs"); //或者wcout.imbue(locale("chs")); wstring objw=s2ws(str); wcout<<objw<<endl;}
程式運行結果:
ABC我們
注意,程式中_TRUNCATE是(size_t)-1,表示無符號整型或者無符號長整型的最大的值。如果生成的是Win32平台的32bits的程式,那么size_t就是unsigned int,如果生成的是x64平台的64bits的程式,那么size_t就是unsigned long int。