C 寬位元組與多位元組之間的轉換

2021-09-19 08:13:12 字數 1736 閱讀 3152

#include 「iostream」

#include 「string」

#include 「locale.h」

#include

#include 「windows.h」

using namespace std;

//string 與 wstring之間的轉換

string ws2s(const wstring &ws)

wstring s2ws(const string &s)

//char* 與 wchar_t* 之間的轉換

char* wctoc(const wchar_t* str)

dword num = widechartomultibyte(cp_acp,0,str,-1,null,0,null,null);

char* pres = new char[num];

widechartomultibyte(cp_acp, 0, str, -1, pres, num, null, null);

return pres;

}wchar_t* ctowc(const char* str)

dword num = multibytetowidechar(cp_acp,0,str,-1,null,0);

wchar_t* pres = new wchar_t[num];

multibytetowidechar(cp_acp, mb_precomposed, str, -1, pres, num);

return pres;

}int main()

;ws.copy(buf, ws.size(), 0);

wprintf(l"test s2ws:%ws\n", buf);

wstring ws2 = l"12345";

string s2 = ws2s(ws2);

char buf2[20] = ;

s2.copy(buf2, s2.size(), 0);

printf("test ws2s:%s\n", buf2);

//char* 與wchar_t* 之間轉換

const wchar_t* ws3 = l"abcde";

const char* s3 = wctoc(ws3);

printf("test2 wctoc: %s\n", s3);

delete s3;

s3 = null;

const char* s4 = "abcde";

const wchar_t* ws4 = ctowc(s4);

wprintf(l"test2 ctowc:%ws", ws4);

delete ws4;

ws4 = null;

wstring ws5;

string s5;

// 宣告乙個用於轉換的變數cv。所有的轉換都經過此變數。

//標頭檔案#include wstring_convert> cv;

s5 = cv.to_bytes(ws5);// 寬位元組轉多位元組

printf("test3 ws to s:%s\n", s5.c_str());

string s6("helloworld");

wstring ws6 = cv.from_bytes(s6);// 多位元組轉寬位元組

wprintf(l"test4 s to ws:%ws\n", ws6.c_str());

return 0;

多位元組與寬位元組之間的轉換

1 函式 widechartomultibyte 轉換 unicode 到 mbcs。lpcolestr lpw l hello,你好 size t wlen wcslen lpw 1 寬字元字元長度,1表示包含字串結束符 int alen widechartomultibyte 第一次呼叫,計算所...

C 寬位元組與多位元組的轉換

在windows上編寫 的時候,都應該使用unicode,但是往往在專案中,總會遇到一些 不方便的地方,例如,讀寫磁碟,加密等等。因此,以下給出2個函式,用於多位元組與寬自己的轉換,主要使用windows提供的 widechartomultibyte與multibytetowidechar函式。12...

C 多位元組與寬位元組之間的相互轉換

c 基本資料型別中表示字元的有兩種 char wchar t。char叫多位元組字元,乙個char佔乙個位元組,之所以叫多位元組字元是因為它表示乙個字時可能是乙個位元組也可能是多個位元組。字元陣列可以表示乙個字串,但它是乙個定長的字串,我們在使用之前必須知道這個陣列的長度。為方便字串的操作,stl定...