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。

熱門詞條

聯絡我們