LPCTSTR,LPCSTR,LPTSTR,LPSTR的區別及用法

LPCSTR       32-bit   指針,指向一個常量字串   
LPSTR          32-bit   指針,指向一個字串   
LPCTSTR    32-bit   指針,指向一個常量字串。此字串可移植到Unicode   和DBCS   
LPTSTR       32-bit   指針,指向一個字串。此字串可移植到Unicode   和DBCS
---------------------------------------------------------------------------------------------------------

L表示long指針, 這是爲了兼容Windows 3.1等16位操作系統遺留下來的, 在win32中以及其他的32爲操作系統中, long指針和near指針及far修飾符都是爲了兼容的作用。沒有實際意義。

P表示這是一個指針,C表示是一個常量T在Win32環境中,有一個_T宏,這個宏用來表示你的字符是否使用UNICODE, 如果你的程序定義了UNICODE或者其他相關的宏,那麼這個字符或者字符串將被作爲UNICODE字符串,否則就是標準的ANSI字符串。STR表示這個變量是一個字符串。

所以LPCTSTR就表示一個指向常固定地址的可以根據一些宏定義改變語義的字符串。同樣, LPCSTR就只能是一個ANSI字符串,在程序中我們大部分時間要使用帶T的類型定義。LPCTSTR == const TCHAR *

-------------------------------------------------------------------------------------------------

char是C語言標準數據類型,字符型,至於由幾個字節組成通常由編譯器決定,一般一個字節。Windows爲了消除各編譯器的差別,重新定義了一些數據類型,你提到了另外幾個類型都是這樣。CHAR爲單字節字符。還有個WCHAR爲Unicode字符,即不論中英文,每個字有兩個字節組成。如果當前編譯方式爲ANSI(默認)方式,TCHAR等價於CHAR,如果爲Unicode方式,TCHAR等價於WCHAR。在當前版本LPCSTR和LPSTR沒區別,即以零結尾的字符串指針,相當於CHAR *。

--------------------------------------------------------------------------------------------------
LPSTR、LPCSTR相當於char *,所以這種類型變量的賦值等同於char *的賦值。如果你不瞭解char *的賦值,你需要去看看C語言入門的書,比如譚浩強的《C語言程序設計》第9章就介紹了這個問題。下面給出兩個例子,一個是直接賦值,另一個是間接的。
    Ex1: LPSTR lpstrMsg = "I'm tired.";
    Ex2: char strMsg[]="I'm tired."; 
    LPSTR lpstrMsg = (LPSTR) strMsg;

---------------------------------------------------------------------

以上是網上對這幾個的簡要介紹。

 

 

 


自己做的的小站,喜歡網絡小說、喜歡讀書的朋友歡迎來轉一轉
小說夜讀

 

 

 

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