通用 MFC 数据类型
|
映射到 ASCII
|
映射到 UNICODE
|
注释
|
_TCHAR
|
char
|
wchar_t
| _TCHAR 是一个映射宏,当定义 UNICODE 时,该数据类型映射到 wchar_t,如果没有定义 UNICODE,那么它映射到 char。 |
_T 或 _TEXT
|
char 常量字符串
|
wchar_t 常量字符串
| 功能与宏相同,在 ASCII 模式下,它们被忽略,也就是说被预处理器删除掉,但是如果定义了UNICODE, 则它们会将常量字符串转换成等价的 UNICODE 。 |
LPTSTR
|
char*, LPSTR(Win32)
|
wchar_t*
| 可移植的32位字符串指针。它将字符类型映射到工程设置的类型。 |
LPCTSTR
|
const char*, LPCSTR(Win32)
|
const wchar_t*
| 可移植的32位常量字符串指针。它将字符类型常量映射到工程设置的类型。 |
修改字符串运算问题
一些字符串操作函数需要获取字符串的字符数(sizeof(szBuffer)/sizeof(TCHAR)),而另一些函数可能需要获取字符串的字节数sizeof(szBuffer)。您应该注意该问题并仔细分析字符串操作函数,以确定能够得到正确的结果。
ANSI操作函数以str开头,如strcpy(),strcat(),strlen();
Unicode操作函数以wcs开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode操作函数以_tcs开头 _tcscpy(C运行期库);
ANSI/Unicode操作函数以lstr开头 lstrcpy(Windows函数);
考虑ANSI和Unicode的兼容,我们需要使用以_tcs开头或lstr开头的通用字符串操作函数。