歡迎來到 常識詞典網 , 一個專業的常識知識學習網站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
先記最原始的 ANSI 字符串 LPSTR, 被定義成 c-ar *.LPCSTR 比 LPSTR 多了個 C, 意思是 const, 所以 LPCSTR 是 const c-ar *.后來 XP 后 微軟又把所有 API 增加了 Unicode 版本(實際是重新開發), 于是在 LPSTR 基礎上加了個 W ,即 LPWSTR, 被定義成 wc-at_t.同理 LPCWSTR 被定義成 const wc-ar_t *.可是怎么兼容 以前的 ANSI 版本的 API 呢? 微軟用 帶 T 的宏 來解決的。如果 定義了Unicode那么 TCHAR 被定義成 WCHAR (就是 wc-ar_t) LPTSTR 被定義成 LPWSTR (wc-ar_t *) LPCTSTR 被定義成 LPCWSTR (const wc-ar_t *)否則 /* 那就是用了 ANSI 版本了 */ TCHAR 被定義成 CHAR (就是 c-ar 了) LPTSTR 被定義成 LPSTR (c-ar *) LPCTSTR 被定義成 LPCSTR (const c-ar *)對應的,實際的函數名 以 A 結尾的 對應 ANSI 版本,而以 W 結尾的 對應的 Unicode 版本.(其實 ANSI 版本現在都是 將參數先轉成 寬字符,再調用 Unicode 版本)比如 MessageBoxA 和 MessageBoxW最后我們用的 MessageBox, 其實也是宏:如果 定義了Unicode那么 MessageBox 就是 MessageBoxW否則 MessageBox 就是 MessageBoxA在平時的時候,c-ar * 與 const c-ar * 之間的顯式轉換很少, 即使用到也很容易轉.偶爾麻煩的就是 ANSI 和 Unicode 之間的轉換,有倆API:Unicode- > ANSI: WideC-arToMultiByteANSI- > Unicode: MultiByteToWideC-ar說真的,這倆 API 若是頻繁用到,看定義都麻煩. 所以最好自己稍微做封裝一下. 以后直接用自己封轉后的版本就好了.答案 2:
WCHAR.H中:typedef unsigned s-ort wc-ar_t;WINNT.H 中typedef c-ar CHAR;typedef wc-ar_t WCHAR;typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, *PSTR;typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR;數據類型中有L,N指的是near和long,有P指的是指針,有C指的是有const修飾,有W指的是寬字符。有UNICODE標識符情況下:typeddef WCHAR TCHAR, * PTCHAR;typeddef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR;typeddef LPCWSTR LPCTSTR;答案 3:
我想說的,前面的幾位都已經說得七七八八了,其實主要是ANSI和UNICODE兩類,但形式上,也可以分標準C/C++和windows api兩類。你上面列出的,一種是C/C++里面的,如c-ar*、const c-ar*之類,一種是windows api里面的,如LPSTR,LPCTSTR之類的,這些是微軟通過宏定義幫前面的c-ar*、const c-ar*等類型起了一個新的名字而已,實質和前面的一樣。當你用到他們時,你可以當光標放到這些類型上,然后F12就可以看到他的原貌了。還有CString這些是MFC,ATL里面的,CString是一個類,類也是一種類型。除了上面你列出的那些,其實還有針對COM的字符串類型、、、答案 4:
const是修飾符,其轉換參考C++對const的規定;LPSTR, LPCSTR等是宏,其實都可以推算到c-ar*, const c-ar* 或者 wc-ar_t*, const wc-ar_t*等實際類型除去這些,Windows下VC++中的字符串類型基本就是:c-ar *, wc-ar_t*,_bstr_t, CComBSTR, CString, basic_string, System.String.MSDN很好的總結了這些字符串之間的轉換:msdn.microsoft/en-US...答案 5:
對c標準,c++標準以外的類型無視。答案 6:
沒必要全記住,用的時候現查msdn也來得及答案 7:
現用現查答案 8:
沒刻意記過,用的時候不會就查;用的多了自然而然就記住了答案 9:
用多了就記住了下一篇:像 “如果云” 這樣山寨 ifttt 網站有前景嗎? 下一篇 【方向鍵 ( → )下一篇】
上一篇:幸福和開心區別是什么? 上一篇 【方向鍵 ( ← )上一篇】
快搜