char與wchar t的區別

2021-09-06 04:43:58 字數 1850 閱讀 6198

有的人愛用strcpy等標準ansi函式,有的人愛用_t***x函式,有必要把來龍去脈搞清楚。 為了搞清這些函式,就必須理請幾種字元型別的寫法。char就不用說了,先說一些wchar_t。wchar_t是unicode字元的資料型別,它實際定義在裡:

typedef unsigned short wchar_t;

不能使用類似strcpy這樣的ansi c字串函式來處理wchar_t字串,必須使用wcs字首的函式,例如wcscpy。為了讓編譯器識別unicode字串,必須以在前面加乙個「l」,例如:

wchar_t *sztest=l"this is a unicode string."

wchar_t是unicode字元的資料型別,它實際定義在裡:

typedef unsigned short wchar_t;

下面在看看tchar。如果你希望同時為ansi和unicode編譯的源**,那就要include tchar.h。tchar是定義在其中的乙個巨集,它視你是否定義了_unicode巨集而定義成char或者wchar_t。如果你使用了tchar,那 麼就不應該使用ansi的str***函式或者unicode的wcs***函式了,而必須使用tchar.h中定義的_tcs***函式。另外,為了解 決剛才提到帶「l」的問題,tchar.h中定義了乙個巨集:「_text」。

以strcpy函式為例子,總結一下:

.如果你想使用ansi字串,那麼請使用這一套寫法:

char szstring[100];

strcpy(szstring,"test");

.如果你想使用unicode字串,那麼請使用這一套:

wchar_t szstring[100];

wcscpyszstring,l"test");

.如果你想通過定義_unicode巨集,而編譯ansi或者unicode字串**:

tchar szstring[100];

_tcscpy(szstring,_text("test"));

2, ansi與unicode

unicode稱為寬字元型字串,com裡使用的都是unicode字串。

將ansi轉換到unicode

(1)通過l這個巨集來實現,例如: clsidfromprogid( l"mapi.folder",&clsid);

(2)通過multibytetowidechar函式實現轉換,例如:

char *szprogid = "mapi.folder";

wchar szwideprogid[128];

clsid clsid;

long llen = multibytetowidechar(cp_acp,0,szprogid,strlen(szprogid),szwideprogid,sizeof(szwideprogid));

szwideprogid[llen] = '

(3)通過a2w巨集來實現,例如:

uses_conversion;

clsidfromprogid( a2w(szprogid),&clsid);

將unicode轉換到ansi

(1)使用widechartomultibyte,例如:

// 假設已經有了乙個unicode 串 wszsomestring...

char szansistring [max_path];

widechartomultibyte ( cp_acp, wc_compositecheck, wszsomestring, -1, szansistring, sizeof(szansistring), null, null );

(2)使用w2a巨集來實現,例如:

uses_conversion;

ptemp=w2a(wszsomestring);

char與wchar t的區別

char與wchar t的區別 有的人愛用strcpy等標準ansi函式,有的人愛用 t x函式,有必要把來龍去脈搞清楚。為了搞清這些函式,就必須理請幾種字元型別的寫法。char就不用說了,先說一些wchar t。wchar t是unicode字元的資料型別,它實際定義在裡 typedef unsi...

char 與wchar t 之間的轉換

function chartowchar purpose char to wchar wchar t lpwstr etc void chartowchar const char chr,wchar t wchar,int size function wchartochar purpose wcha...

char 與wchar t 之間的轉換

把char 轉換為wchar t 用stdlib.h 中的mbstowcs s 函式,可以通過下面的例子了解其用法 char cstr string to convert size t len strlen cstr 1 size t converted 0 wchar t wstr wstr wc...