LPTSTR lpStr = new TCHAR[32]; TCHAR* szBuf = _T("Hello");代码含义?
答案:2 悬赏:70 手机版
解决时间 2021-01-31 10:43
- 提问者网友:嗝是迷路的屁
- 2021-01-30 16:56
LPTSTR lpStr = new TCHAR[32]; TCHAR* szBuf = _T("Hello");代码含义?
最佳答案
- 五星知识达人网友:猎心人
- 2021-01-30 17:44
LPTSTR即TCHAR*
TCHAR是自适应类型,取决于项目设置是否“使用UNICODE”,在UNICODE下TCHAR就是wchar_t,否则就是char。
_T()用来适应字符串常量,UNICODE下_T("Hello")会变成L"Hello",否则就是"Hello"。
L用来表示字符串常量是宽版的。
要理解这些首先要知道VC下字符串有宽版和非单字节版,宽版字符串基本单元是wchar_t,本质上是short int,占两个字节。单字节版字符串基本单元是char。VC api中往往会用一些其他字母代替:
LPSTR - char*
LPCSTR - const char*
LPWSTR - wchar_t*
LPCWSTR - const wchar_t*
TCHAR - wchar_t 或者 char
LPTSTR - TCHAR*
LPCTSTR - const TCHAR*
所以以上代码等价于
UNICODE情况下:
wchar_t* lpStr = new wchar_t[32];
wchar_t* szBuf = L"Hello";
非UNICODE情况下:
char* lpStr = new char[32];
char* szBuf = "Hello";
TCHAR是自适应类型,取决于项目设置是否“使用UNICODE”,在UNICODE下TCHAR就是wchar_t,否则就是char。
_T()用来适应字符串常量,UNICODE下_T("Hello")会变成L"Hello",否则就是"Hello"。
L用来表示字符串常量是宽版的。
要理解这些首先要知道VC下字符串有宽版和非单字节版,宽版字符串基本单元是wchar_t,本质上是short int,占两个字节。单字节版字符串基本单元是char。VC api中往往会用一些其他字母代替:
LPSTR - char*
LPCSTR - const char*
LPWSTR - wchar_t*
LPCWSTR - const wchar_t*
TCHAR - wchar_t 或者 char
LPTSTR - TCHAR*
LPCTSTR - const TCHAR*
所以以上代码等价于
UNICODE情况下:
wchar_t* lpStr = new wchar_t[32];
wchar_t* szBuf = L"Hello";
非UNICODE情况下:
char* lpStr = new char[32];
char* szBuf = "Hello";
全部回答
- 1楼网友:詩光轨車
- 2021-01-30 19:17
第一个定义了字符数组lpStr
第二个定义了字符指针szBuf
第二个定义了字符指针szBuf
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯