前言 众所周知,C++中的字符分成两种类型:wchar_t和char。其中,WCHAR 对应 wchar_t,CHAR 对应 char,TCHAR 是一种条件编译的类型,根据条件动态代表 wchar_t 或者 char。

一、与字符集的关系 其实,它们三者和对应的字符集相关。C语言用 char 来表示一个8位 ANSI 字符,用wchar_t表示一个16位的Unicode字符。strlen返回一个ANSI字符串的长度,wcslen返回一个Unicode字符串的长度。

其中,ANSI 是单字节字符集,每个字符占一个字节,最多表示256个符号;Unicode 是双字节字符集,每个字符占两个字节;

char表示一个ANSI字符。

wchar_t表示一个Unicode字符。

std::string表示一个ANSI字符串。

std::wstring表示一个Unicode字符串。

二、代码实例 为了便于理解,此处看一段代码实例:

WINBASEAPI BOOL WINAPI FillConsoleOutputCharacterA( In HANDLE hConsoleOutput, In CHAR cCharacter, In DWORD nLength, In COORD dwWriteCoord, Out LPDWORD lpNumberOfCharsWritten );

WINBASEAPI BOOL WINAPI FillConsoleOutputCharacterW( In HANDLE hConsoleOutput, In WCHAR cCharacter, In DWORD nLength, In COORD dwWriteCoord, Out LPDWORD lpNumberOfCharsWritten );

#ifdef UNICODE #define FillConsoleOutputCharacter FillConsoleOutputCharacterW #else #define FillConsoleOutputCharacter FillConsoleOutputCharacterA #endif // !UNICODE 上述代码,根据是否支持 UNICODE 字符集,FillConsoleOutputCharacter方法对应不同的两种实现,分别是FillConsoleOutputCharacterW和FillConsoleOutputCharacterA。

三、常见宏 常见宏对应的具体的数据类型:

LPSTR – char*

LPWSTR – wchar_t*

LPTSTR – char* 或 wchar_t*

LPCSTR – const char*

LPCWSTR – const wchar_t*

LPCTSTR – const wchar_t* 或 const char* ———————————————— 版权声明:本文为CSDN博主「Data-Mining」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/liuzehn/article/details/124211056