C++这个名字是Rick Mascitti于1983年中所建议的,并于1983年12月首次使用。更早以前,尚在研究阶段的发展中语言曾被称为“new C”,之后是“C with Class” 。在计算机科学中,C++仍被称为C语言的上层结构。它最后得名于C语言中的“++” *** 敏桐森培作符(其对变量的值进行递增)。而且在共同的命名约定中,使用“+”以表示增强的程序。Stroustrup说:“这个名字象征着源自于C语桥春坦言变化的自然演进”。
VS2005以后的版本中LPCTSTR的定义位于WinNT.h。//
// Neutral ANSI/则脊镇UNICODE types and macros
//
#ifdef UNICODE // r_winnt
#ifndef _TCHAR_DEFINED
typedef WCHAR TCHAR, *PTCHAR
typedef WCHAR TBYTE , *PTBYTE
#define _TCHAR_DEFINED
#endif /* !_TCHAR_DEFINED */
typedef LPWCH LPTCH, PTCH
typedef LPWSTR PTSTR, LPTSTR
typedef LPCWSTR PCTSTR, LPCTSTR
typedef LPUWSTR PUTSTR, LPUTSTR
typedef LPCUWSTR PCUTSTR, LPCUTSTR
typedef LPWSTR LP
#define __TEXT(quote) L##quote // r_winnt
#else /* UNICODE */ // r_winnt
#ifndef _TCHAR_DEFINED
typedef char TCHAR, *PTCHAR
typedef unsigned char TBYTE , *PTBYTE
#define _TCHAR_DEFINED
#endif /* !_TCHAR_DEFINED */孙粗
typedef LPCH LPTCH, PTCH
typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR
typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR
#define __TEXT(quote) quote // r_winnt
#endif /* UNICODE */// r_winnt
#define TEXT(quote) __TEXT(quote) //野友 r_winnt
可以用A2W,具体可参考下面的说明:LPSTR(char*)和LPWSTR的转换
可以使用下面的ATL宏来进行,最好是将变量定义成TCHAR、LPTSTR等T类型,可以避免转换。
ATL宏介绍:
A2BSTR OLE2A T2AW2A
A2COLE OLE2BSTRT2BSTRW2BSTR
A2CT OLE2CA T2CA W2CA
A2CWOLE2CT T2COLEW2COLE
A2OLE OLE2CW T2CW W2CT
A2TOLE2TT2OLEW2OLE
A2W OLE2W T2W W2T
A :ANSI 字符串,也就是 MBCS。
W、OLE 宽字符串,也就是 UNICODE。
T 中间类仿衡悔型T。如果定义了 _UNICODE,则T表示W;如果定义了 _MBCS,则T表示A
C const 的缩写
利用这些宏,可以快速的进行各种字符间的转换。使用备正前必须包含头文件,并且申明USER_CONVERSION;使用 ATL 转换宏,由拦没于不用释放临时空间,所以使用起来非常方便。但是考虑到栈空间的尺寸(VC 默认2M),使用时要注意几点:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)