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 字符串。
二、代码实例
为了便于理解,此处看一段代码实例:
上述代码,根据是否支持 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*
作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO 社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄
版权声明: 本文为 InfoQ 作者【liuzhen007】的原创文章。
原文链接:【http://xie.infoq.cn/article/7aad70a63d6ef277e8b00c822】。文章转载请联系作者。
评论