C 字元型別TCHAR char和wchar t

2022-09-23 20:42:14 字數 1884 閱讀 7034

1、首先,char是8位字元型別,最多只能包含256種字元,許多外文字符集所含的字元數目超過256個,char型無法表示。

2、wchar_t是c/c++的字元資料型別,是一種擴充套件的字元儲存方式,wchar_t型別主要用在國際化程式的實現中,但它不等同於unicode編碼。unicode編碼的字元一般以wchar_t型別儲存。

3、wchar_t資料型別一般為16位或32位,但不同的c或c++庫有不同的規定,如gnu libc規定wchar_t為32位[1],總之,wchar_t所能表示的字元數遠超char型。標準c++中的wprintf()函式以及iostream類庫中的類和物件能提供wchar_t寬字元型別的相關操作。

int main()

4、tchar

因為c++支援兩種字串,即常規的ansi編碼(使用""包裹)和unicode編碼(使用l""包裹),這樣對應的就有了兩套字串處理函式,比如:strlen和wcslen,分別用於處理兩種字串。

微軟將這兩套字符集及其操作進行了統一,通過條件編譯(通過_unicode和unicode巨集)控制實際使用的字符集,這樣就有了_t("")這樣的字串,對應的就有了_tcslen這樣的函式

為了儲存這樣的通用字元,就有了tchar:

當沒有定義_unicode巨集時,tchar = char,_tcslen =strlen

當定義了_unicode巨集時,tchar = wchar_t , _tcslen = wcslen[1]

#ifdef unicode

typedef wchar_t tchar;

#else

typedef char tchar;

#endif當我們定義了unicode巨集,就相當於告訴了編譯器:我準備採用unicode版本。這個時候,tchar就會搖身一變,變成了wchar_t。而未定義unicode巨集時,tchar搖身一變,變成了unsignedchar。這樣就可以很好的切換寬窄字符集。

tchar可用於雙位元組字串,使程式可以用於中日韓等國 語言文字處理、顯示。使程式設計方法簡化。

5、_t("")是乙個巨集,定義於tchar.h下。

#define __t(x) l ## x

#define _t(x) __t(x)

他的作用是讓你的程式支援unicode編碼,因為windows使用兩種字符集ansi和unicode,前者就是通常使用的單位元組方式,但這種方式處理像中文這樣的雙位元組字元不方便,容易出現半個漢字的情況。而後者是雙位元組方式,方便處理雙位元組字元。windows nt的所有與字元有關的函式都提供兩種方式的版本,而windows

9x只支援ansi方式。如果你編譯乙個程式為ansi方式,_t實際不起任何作用。而如果編譯乙個程式為unicode方式,則編譯器會把"hello"字串以unicode方式儲存。_t和_l的區別在於,_l不管你是以什麼方式編譯,一律以unicode方式儲存。

lpstr:32bit指標指向乙個字串,每個字元佔1位元組

lpcstr:32-bit指標指向乙個常字串,每個字元佔1位元組

lpctstr:32-bit指標指向乙個常字串,每字元可能佔1位元組或2位元組,取決於unicode是否定義

lptstr:32-bit指標每字元可能佔1位元組或2位元組,取決於unicode是否定義

l是表示字串資源為unicode的。

比如wchar_tstr = l"hello world!";

這個就是雙位元組儲存字元了。

_t是乙個適配的巨集~

當#ifdef _unicode的時候

_t就是l

沒有#ifdef _unicode的時候

_t就是ansi的。

#ifdef unicode

typedef wchar_t tchar;

#else

typedef char tchar;

#endif

C 字元型別TCHAR char和wchar t

1 首先,char是8位字元型別,最多只能包含256種字元,許多外文字符集所含的字元數目超過256個,char型無法表示。2 wchar t是c c 的字元資料型別,是一種擴充套件的字元儲存方式,wchar t型別主要用在國際化程式的實現中,但它不等同於unicode編碼。unicode編碼的字元一...

C 字元型別

除了數字以外,計算機處理的資訊,主要就是字元了。字元包括數字字元 英文本母 表達符號等,c 提供的字元型別按照國際上公認的標準,採用unicode字符集。乙個unicode的標準字元長度為16位,用它可以來表示世界上大多數語言。可以按以下方法給乙個字元變數賦值,如 char c a 另外,我們還可以...

C 字元型別

只有兩種char和wchar t wchar wchar t,char char tchar根據是否定義unicode為兩種之一 char為ansi字符集 非ascii字符集 英文單位元組,中文等兩位元組 wchar t為unicode字符集,全兩位元組 l 轉為unicode t 根據是否 def...