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

【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.kler.cn/a/158572.html

相关文章:

  • ssh无法连接Ubuntu
  • 海量数据面试题
  • PhpSpreadsheet导出图片
  • .NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper
  • 构建SSH僵尸网络
  • python语言基础-5 进阶语法-5.2 装饰器-5.2.2 简单装饰器
  • 有趣的代码——有故事背景的程序设计3
  • 驱动模块--内核模块
  • Qt 布局讲解及举例
  • 打破界限:SQL数据库水平扩展的8大挑战与机遇
  • 【开源】基于JAVA的医院门诊预约挂号系统
  • (C++)有效三角形的个数--双指针法
  • 推荐6款本周 火火火火 的开源项目
  • SpringBoot学习笔记-实现微服务:匹配系统(下)
  • C语言初学4:C 存储类
  • RocketMQTemplate 发送消息的高级用法
  • 流程编排-java
  • GOLAND搭建GIN框架以及基础框架搭建
  • 一文解决msxml3.dll文件缺失问题,快速修复msxml3.dll
  • postgresql-effective_cache_size参数详解
  • 对小程序的初了解
  • 理解DuLinkList L中的“”引用符号
  • 创建JDK8版本的SpringBoot项目的方法
  • Git 分支详解
  • 【shell】多行重定向与免交互expect与ssh、scp的结合使用
  • vue3 vue-router过渡动效 滚动行为 (四)