WinAPI的数据类型(字符串)
刚开始使用Windows提供的各种API函数时,对于函数参数的类型感到非常的迷惑,实际上Windows中对于各种C++数据类型做了封装和处理,得到了一组Windows的变量类型,其中的部分字符和字符串的定义如下。
其他的类型定义可以在具体使用时搜索查看头文件(例如#include <Windows.h>
)或者MSDN。
字符和字符串类型
变量类型 | 解释 | 定义 |
---|---|---|
CHAR | ANSI型字符 | char |
WCHAT | Unicode型字符 | wchar_t |
TCHAR | 自适应字符(ANSI or Unicode) | 可变 |
LPSTR/PSTR | ANSI型字符串 | char* |
LPWSTR/PWSTR | Unicode型字符串 | wchar_t* |
LPTSTR/PTSTR | 自适应字符串(ANSI or Unicode) | 可变 |
LPCSTR/PCSTR | 常量ANSI型字符串 | const char* |
LPCWSTR/PCWSTR | 常量Unicode型字符串 | const wchar_t* |
LPCTSTR/PCTSTR | 常量自适应字符串 | 可变 |
其中的前缀LP/P,可以理解为表示指针Pointer(字符串变量为字符数组的首地址指针)。
字符串函数
绝大多数操作字符串的函数都提供了A和W两种,例如RegOpenExA()和RegOpenExW(),同时提供了自适应的版本RegOpenEx(),A为后缀的函数参数通常为ANSI型,W为后缀的函数参数通常为Unicode型,无后缀的函数使用自适应定义。
#ifdef UNICODE
#define TCHAR Wchar_t
#else
#define TCHAR char
#endif
#ifdef UNICODE
#define RegOpenEx RegOpenExW
#else
#define RegOpenEx RegOpenExA
#endif