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

2021-04-22 13:03:24 字數 1206 閱讀 7011

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

多位元組字串與寬字串的轉換可使用c api者win32 api.

c api: mbstowcs,wcstombs

win32 api: multibytetowidechar, widechartomultibyte

下面著重介紹win32 api的用法,c api的用法較為簡單可參照win32 api。

首先是widechartomultibyte

通常你需要配置4個引數(其他引數如是使用即可),紅色標記的部分。

依次是源寬字串,需要轉換的長度(-1,則為轉換整個字串),目標多位元組字串,目標緩衝區長度。

返回值表示轉換為目標多位元組字串實際需要的長度(包括結束符)。

所以通常需要呼叫widechartomultibyte兩次:第一次產生目標緩衝區長度,第二次產生目標字串,像下面這樣

wchar_t* wcs = l"中國,你好!i love you!";

int lengthofmbs = widechartomultibyte( cp_acp, 0, wcs, -1, null, 0, null, null);

char* mbs = new char[ lengthofmbs ];

widechartomultibyte( cp_acp, 0, wcs, -1, mbs, lengthofmbs, null, null);   

delete mbs;

mbs = null;

multibytetowidechar的用法類似

char* mbs = "中國,你好!i love you!";

int lengthofwcs = multibytetowidechar( cp_acp, 0, mbs, -1, null, 0 );

wchar_t* wcs = new wchar_t[ lengthofwcs ];

multibytetowidechar( cp_acp, 0, mbs, -1, wcs, lengthofwcs );

delete wcs;

wcs = null;

下面兩個函式封裝了轉換過程

#include

#include

std::string wcstombs( const std::wstring& wcs )

std::wstring mbstowcs( const std::string& mbs )

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

多位元組字串與寬字串的轉換可使用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的用法較為簡單可參照win32 api。...

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

windows函式 multibytetowidechar提供將多位元組字串轉換為寬位元組字串的功能 參考windows核心程式設計2.8 int multibytetowidechar uint ucodepage,dword dwflags,pcstr pmultibytestr,int cbm...