mbstowcs_s

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。

相關詞條

熱門詞條

聯絡我們