Ansi(窄) | char | char* | const char* |
CHAR | PCHAR、PSTR、LPSTR | LPCWSTR | |
Unicode(宽) | wchar_t | wchar_t* | const wchar_t* |
WCHAR | PWCHAR、PWSTR、LPWSTR | LPCWSTR | |
T(通用) | TCHAR | TCHAR*、PTCHAR、PTSTR、LPTSTR | LPCTSTR |
注:P代表指针,STR代表字符串,L表示长指针(Win32下可忽略),C代表常量,W代表宽字节。
另:建议使用通用类型,能够根据定义的宏,选择相应的类型。
字符串 | Ansi | Unicode | 通用 |
长度 | strlen(char *str); | wcslen(wchar_t *str); | _tcslen(TCHAR *str); |
转换 | int atoi(const char *str); | int _wtoi(const wchar_t *str); | _tstoi(const TCHAR *str); |
拷贝 | strcpy(char *strDest, const char *strSrc); | wcscpy(wchar_t *strDest, const wchar_t *strSrc); | _tcscpy(TCHAR *strDest, const TCHAR *strSrc); |
注:以上函数不安全,在vs2003等以上版本的编译器中会有warnning警告提示,以下为安全函数(vc++6.0不支持):
● Ansi:strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);
● Unicode:wcscpy_s(wchar_t *strDestination, size_t numberOfElements, const wchar_t *strSource);
● 通用函数:_tcscpy_s(TCHAR *strDestination, size_t numberOfElements, const TCHAR *strSource);
numberOfElements
Size of the destination string buffer. 目的缓冲区的大小,以字节为单位!