C++中字符三兄弟WCHAR、CHAR、TCHAR

目录

前言

一、与字符集的关系

二、代码实例

三、常见宏


前言

众所周知,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*

作者简介:

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...