WinAPI的数据类型(字符串)

Jun 11, 2020· · 1 min read

刚开始使用Windows提供的各种API函数时,对于函数参数的类型感到非常的迷惑,实际上Windows中对于各种C++数据类型做了封装和处理,得到了一组Windows的变量类型,其中的部分字符和字符串的定义如下。

其他的类型定义可以在具体使用时搜索查看头文件(例如#include <Windows.h>)或者MSDN。

字符和字符串类型

变量类型解释定义
CHARANSI型字符char
WCHATUnicode型字符wchar_t
TCHAR自适应字符(ANSI or Unicode)可变
LPSTR/PSTRANSI型字符串char*
LPWSTR/PWSTRUnicode型字符串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

参考MSDN