当前位置: 首页 > news >正文

【win32_003】不同字符集下的通用字符串语法TCHAR、TEXT、PTSTR、PCTSTR

TCHAR 通用

根据项目属性是否使用Unicode字符集,TCHAR被解释为CHAR(char)或WCHAR(wchar_t)数据类型。
TCHAR a = ‘A’ ;
TCHAR arr [] =TEXT(“AA”);
TCHAR arr [100] =TEXT(“AA”);
TCHAR *pstr = TEXT(“AA”);

TEXT宏

#ifdef UNICODE
#define __TEXT(quote) L##quote
#else
#define __TEXT(quote) quote
#endif

#define TEXT(quote) __TEXT(quote)

##被称为“令牌粘贴”,表示把字母L和宏参数拼接在一起,假设宏参数quote是"Hello!“,那么L##quote就是L"Hello!”。

用法

TCHAR szBuf[] = TEXT(“C语言”);

字符串数据类型(PTSTR)

ANSI

PSTR和LPSTR表示CHAR类型字符串;
PCSTR和LPCSTR表示CHAR类型常字符串,C表示const。

UNICODE

PWSTR和LPWSTR表示WCHAR类型字符串;
PCWSTR和LPCWSTR表示WCHAR类型常字符串。

通用

PTSTR和LPTSTR表示TCHAR类型字符串;
PCTSTR和LPCTSTR表示TCHAR类型常字符串。

PCTSTR pstr = TEXT(“C语言”);


char类型(多字节字符集ANSI)

用char数据类型定义变量就表示使用多字节字符集存储字符,使用1字节或多字节来表示一个字符。

单个字符

char c = ‘A’;//占用1Byte

字符串指针

char *pStr = “Hello!”;//指针占4Byte,字符串占7Byte(含结束标志0)

字符串数组

char szStr[] = “Hello!”;//数组占7Byte(含结束标志0)

wchar_t类型(宽字节字符集unicode)

用VS创建项目的时候,默认使用Unicode字符集,可以通过在解决方案资源管理器中右键单击项目名称→属性→配置属性→高级→字符集进行设置。
用wchar_t数据类型定义变量表示使用Unicode字符集存储字符,使用2字节来表示一个字符。

宽字符集 unicode

Unicode(一般指UTF-16)统一用2字节来表示一个字符。
Unicode是现代计算机的默认编码方式。

单个宽字符

wchar_t wc = L’A’;
大写字母L表明右边的字符需要使用宽字符存储。

宽字符串指针

wchar_t *pwStr = L"Hello!";//其中包括12字节的字符和2字节的字符串结束标志0

宽字符数组

wchar_t szwStr[] = L"Hello!";//14Byte

入口函数

ANSI

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

UNICODE

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow);

通用

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow);
如果使用_tWinMain,那么必须包含tchar.h头文件。

http://www.lryc.cn/news/253320.html

相关文章:

  • 《漫长的等待》—— 读后感
  • 基于ROPNet项目训练modelnet40数据集进行3d点云的配置
  • 力扣215. 数组中的第K个最大元素
  • 轻量封装WebGPU渲染系统示例<40>- 多层材质的Mask混合(源码)
  • 程序员的实用网站导航与推荐
  • 上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花板
  • 【halcon】C# halcon 内存暴增
  • LeetCode130. Surrounded Regions
  • 【实战教程】PHP如何轻松对接腾讯云COS,实现文件上传下载?
  • pytorch学习10-网络模型的保存和加载
  • SQL Server 2016(分离和附加数据库)
  • 用友U8 Cloud RegisterServlet SQL注入漏洞复现
  • coding创建远程分支。并拉取远程新分支+推送代码
  • 坚鹏:中国工商银行内蒙古分行数字化转型发展现状与成功案例培训
  • AIGC发展史
  • 面试题库之JAVA基础篇(二)
  • [Rust] 可迭代类型, 迭代器, 如何正确的创建自定义可迭代类型
  • MySQL中,text,mediumtext, 和 longtext字符类型
  • 网页开发 JS基础
  • 如何在财税行业查找批量客户?
  • IntelliJ IDEA详细完整安装教程
  • 【.NET Core】Linq查询运算符(一)
  • Python sorted函数及用法以及如何用json模块存储数据
  • 使用opencv将sRGB格式的图片转换为BT.2020格式【sRGB】【BT.2020】
  • 聊天注意事项
  • 12.5 作业
  • 深入理解指针3
  • 大数据环境下在线考试系统安全策略研究
  • Python中程序的异常处理
  • 有趣的代码——有故事背景的程序设计3