Windows字符串类型

Windows字符串类型

作者: yym439 时间: 2021-08-24

一、类型比较

类型 多字节 (ANSI)定义 宽字节 (UNICODE)定义 通用类型
字符 char - wchar_t typedef unsigned short wchar_t TCHAR
字符 CHAR typedef char CHAR WCHAR typedef wchar_t WCHAR TCHAR
字符串指针 LPSTR typedef CHAR* LPSTR LPWSTR typedef WCHAR* LPWSTR LPTSTR
字符串常量 LPCSTR typedef const CHAR* LPCSTR LPCWSTR typedef const WCHAR* LPCWSTR LPCTSTR

常用字符串类:std::string、CString(MFC类)

1.1 增强程序通用性

  • 使用通用类型(会根据工程字符集自动选择合适的类型表示)
  • 表示字符串常量,不能简单使用双引号(代表ascii字符);也不能在前面加L(代表unicode);使用_T(“”)
  • TCHAR FF[50]。FF能装多少字符?不要习惯性的sizeof(FF)了,应该_countof(FF)或者sizeof(FF)/sizeof(TCHAR)。因为我们不确定TCHAR到底是char 还是 wchar_t
  • 不能再使用以前的字符串处理函数或者字符处理函数了。比如strlen、strcat、strcmp等,因为这些是ascii专用的,通通改成使用T家族的吧。前缀都换成_tcs。比如_tcslen、_tcscat、_tcscmp等等
  • sprintf,今后就改成_stprint()
  • IsTextUnicode函数方法判断某个字符串是不是unicode字符串
  • 绝大多数情况下应该使用TCHAR,但是记住GetProcAdress这个特殊的函数吧,它的参数只能是char*。因为在导出函数表里函数名是用ascii码写的

1.2 通用字符串格式化方法

TCHAR szChar[20];        
_stprintf_s(szChar,_T("char code is %d"),wParam);
MessageBox(hwnd,szChar,_T("char"),0); 

博客

Windows字符串类型