欢迎来到 常识词典网 , 一个专业的常识知识学习网站!
[ 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 网站有前景吗? 下一篇 【方向键 ( → )下一篇】
上一篇:幸福和开心区别是什么? 上一篇 【方向键 ( ← )上一篇】
快搜