多位元組字串轉寬位元組字串(windows)

2021-07-25 15:57:04 字數 1107 閱讀 4403

windows函式 multibytetowidechar提供將多位元組字串轉換為寬位元組字串的功能(參考windows核心程式設計2.8)。

int multibytetowidechar(

uint ucodepage,

dword dwflags,

pcstr pmultibytestr,

int cbmultibyte,

pwstr pwidecharstr,

int cchwidechar);

ucodepage標識與多位元組字元關聯的**頁值(個人理解指當前多位元組的編碼格式)。

dwflags提供一些額外的標識,這裡寫0.

pmultibytestr指定要轉換的字串。

cbmultibyte指定字串的長度(傳入-1,函式可自動判斷源字串長度)。

pwidecharstr轉換所得寬位元組字串的記憶體位址。

cchwidechar寬位元組字串的長度(傳入0函式不會執行,而是返回乙個寬位元組數包括終止符『\0』)。

操作步驟:

1.呼叫multibytetowidechar,為pwidecharstr 傳入null,cchwidechar傳入0,cbmultibyte傳入-1,得到要轉換寬位元組字元數count。

2.申請長度為count*sizeof(wchar_t)的記憶體空間,用於存放轉換的寬位元組字串。

3.再次呼叫multibytetowidechar,傳入指定的引數,便可獲取轉換完的寬位元組字串。

4.釋放申請的記憶體塊。

string strret = getstr(psztable, pszfield, id);

int len = multibytetowidechar(cp_utf8, 0, strret.c_str(), -1, null, 0);

wchar_t* wstr = new wchar_t[len];

len *= sizeof(wchar_t);

memset(wstr, 0, len);

multibytetowidechar(cp_utf8, 0, strret.c_str(), -1, wstr, len);

delete wstr;

wstr = nullptr;

多位元組字串與寬字串的轉換

多位元組字串與寬字串的轉換可使用c api者win32 api.c api mbstowcs,wcstombs win32 api multibytetowidechar,widechartomultibyte 下面著重介紹win32 api的用法,c api的用法較為簡單可參照win32 api。...

多位元組字串與寬字串的轉換

多位元組字串與寬字串的轉換 多位元組字串與寬字串的轉換可使用c api者win32 api.c api mbstowcs,wcstombs win32 api multibytetowidechar,widechartomultibyte 下面著重介紹win32 api的用法,c api的用法較為簡...

多位元組字串與寬字串的轉換

多位元組字串與寬字串的轉換可使用c api者win32 api.c api mbstowcs,wcstombs win32 api multibytetowidechar,widechartomultibyte 下面著重介紹win32 api的用法,c api的用法較為簡單可參照win32 api。...