關於VC++中宏定義的字符串類型

1.PCSTR,LPCSTR


_P_:point   指針

_C_:const  常量

_STR_ :string 字符串


PCSTR 就是 const char* 類型


PCSTR的定義處

typedef CONST CHAR *LPCSTR, *PCSTR;


_L_:long 長類型

_T_: 這裏無意義


LPCTSTR的定義處

typedef LPCSTR LPCTSTR;


LPCSTR 的定義處

typedef CONST CHAR *LPCSTR, *PCSTR;


在VC98中,LPCTSTR 和PCSTR是同一類型,都是const char*;


LPCWSTR


_W_:wide 寬類型

LPWSTR就是寬字符串的指針


LPWSTR的定義處

typedef WCHAR *LPWSTR, *PWSTR;


2.字符串的定義和初始化

char *str = "abcd";

char str[20] = "abcd";


3.關於wchar_t,L"xx",_T


vc98下面

wchar_t 定義於CTYPE.H中

typedef unsigned short wchar_t;


wchar_t用來存放UNICODE字符的。


Q:爲什麼要用 UNICODE?

A:起初電腦上只有ANSI字符集,這種字符集規定一個字符只佔用7bits,這樣就能表示英文的所有字母和一些常用的符號。

後來這些這中字符集不能滿足需要了,比如除了英文還要表示中文的所有字符,還有其他國家的所有文字,所以後來就用兩個字節,就是16bits表示一個字符,這樣就能滿足需要了,這就是UNCODE字符集。


所有wchar_t表示的變量佔用的空間就是兩個字節。


wchar_t wstr[20] = L"hello,world!";

L"xx"就是將字符串從ansi編碼存放方式的轉化爲按UNICODE編碼存放方式


_T("")是一個宏,

vs10.0中

定義於tchar.h下。

#define __T(x) L ## x

#define _T(x) __T(x)


vc98中

定義於TCHAR.H下

#define __T(x)      x

#define _T(x)       __T(x)


_T的作用就是讓你在不同編譯器下表現的不同(轉化爲UNICODE,或者不轉化UNIDODE)










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章