【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.mzph.cn/news/199760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32下载程序的五种方法

刚开始学习 STM32 的时候,很多小伙伴满怀热情买好了各种设备,但很快就遇到了第一个拦路虎——如何将写好的代码烧进去这个黑乎乎的芯片~ STM32 的烧录方式多样且灵活,可以根据实际需求选择适合的方式来将程序烧录到芯片中。本文将…

10年前,我就用 SQL注入方式发现了学校网站的漏洞

大家好,我是风筝。 事情是这样子的,在10年以前,某个月黑风高夜的夜里,虽然这么说有点暴露年龄了,但无所谓,毕竟我也才18而已。我打开电脑,在浏览器中输入我们高中学校的网址,页面很…

TCP首部格式_基本知识

TCP首部格式 表格索引: 源端口目的端口 序号 确认号 数据偏移保留 ACK等 窗口检验和紧急指针 TCP报文段首部格式图 源端口与目的端口: 各占16位 序号:占32比特,取值范围0~232-1。当序号增加到最后一个时,下一个序号又回到0。用来指出本TCP报文段数据载…

【win32_004】字符串处理函数

StringCbPrintf 函数 (strsafe.h):格式化字符串 STRSAFEAPI StringCbPrintf([out] STRSAFE_LPSTR pszDest,//目的缓冲区 LPSTR指针或者数组[in] size_t cbDest,//目的缓冲区大小[in] STRSAFE_LPCSTR pszFormat,//格式 例如: TEXT("%d&…

ctfhub技能树_web_信息泄露

目录 二、信息泄露 2.1、目录遍历 2.2、Phpinfo 2.3、备份文件下载 2.3.1、网站源码 2.3.2、bak文件 2.3.3、vim缓存 2.3.4、.DS_Store 2.4、Git泄露 2.4.1、log 2.4.2、stash 2.4.3、index 2.5、SVN泄露 2.6、HG泄露 二、信息泄露 2.1、目录遍历 注&#xff1…

【ArcGIS Pro微课1000例】0050:如何清除坐标系信息

文章目录 一、目的二、方法1. 使用【定义投影】工具2. 清除数据的投影信息3. 删除坐标文件 一、目的 地理信息数据的坐标系是将地理信息数据进行融合、叠加、分析的重要数学框架,而其描述信息是非常重要的元数据,涉及整个国家的测绘坐标系统&#xff0c…

【CSP】202309-1_坐标变换(其一)Python实现

文章目录 [toc]试题编号试题名称时间限制内存限制问题描述输入格式输出格式样例输入样例输出样例说明评测用例规模与约定Python实现 试题编号 202309-1 试题名称 坐标变换(其一) 时间限制 1.0s 内存限制 512.0MB 问题描述 对于平面直角坐标系上的坐标 (…

DSSS技术和OFDM技术

本内容为学习笔记,内容不一定正确,请多处参考进行理解 https://zhuanlan.zhihu.com/p/636853588 https://baike.baidu.com/item/OFDM/5790826?frge_ala https://zhuanlan.zhihu.com/p/515701960?utm_id0 一、 DSSS技术 信号替代:DSSS技术为…

python中列表的方法

文章目录 列表的方法sort()append() 列表的方法 列表(List)是Python中的一种数据结构, 提供了一些可以操作列表的方法。以下是一些常见的列表方法: append():向列表末尾添加一个元素。 my_list [1, 2, 3] my_list.…

C++ 操作MinIO做文件数据的上传和下载(踩坑与经验)包含编译包

前言 最近在做项目流程优化,准备将之前的java对文件的操作转换到c端,因此做了基于c的minio操作的测试demo。期间的各种踩坑与问题,花了一天时间总算是成功了,当然还有一些小问题,等待后续其他大拿解决。 项目环境 v…

Jmeter调用本地Exe程序

背景: 候使用C#编译的小工具制作压测的请求的入参,因Jmeter无法调用C#的方法,可以把C#编译个exe程序,在启动压测前,让JMeter调用本地的exe批量生成压测数据。 使用步骤: 打开Jmeter,右击选择…

【Vue】使用cmd命令创建vue项目

上一篇: node的安装与配置 https://blog.csdn.net/m0_67930426/article/details/134562278?spm1001.2014.3001.5502 目录 一.创建空文件夹专门存放vue项目 二. 查看node , npm 和vue脚手架的版本 三.安装vue脚手架 四.创建vue项目 五.运行项目 一.创建空文件…

第五期丨酷雷曼无人机技能培训圆满举办

第5期无人机技能提升培训 2023年11月28日-29日,为期2天的酷雷曼第五期无人机技能提升培训会圆满举办。本届培训会盛况依旧,数十位合作商不远千里相约,共同提升专业水准,考取执照证书。 入场签到 初冬已至,尽管天气渐…

第18关 K8s数据安全无忧——持久化存储详解

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,本期课程将深入解析Kubernetes的持久化存储机制,包括PV、PVC、StorageClass等的工作原理、使用场景、最佳实践等,帮您构建稳定可靠的状态存储,确保应用和数据 100% 安全。 Volume …

properties出现中文乱码解决方法(万能)

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 在使用Properties类的时候,中文出现乱码 如图所示: 正常思维来讲,估计是中文编码有问题,于是我将其改为UTF-8的编码方式 通过下方的改动: 可到了这一步,中文还是乱码(这一步改成功的网友可自动立场,没改成功的网…

PVE系列-LVM安装MacOS的各个版本及VNC加密隧道访问

PVE系列-LVM安装MacOS的各个版本 环境配置大概过程:详细步骤:1.建立安装环境和下载安装工具2. 重启后,执行osx-setup配置虚拟机3. 安装到硬盘,4.设定引导盘,以方便自动开机启动5.打开屏幕共享和系统VNC6.VNC加密的ssh隧…

synchronized底层原理(二)

书接上文 文章目录 1. 锁升级原理2. Synchronized锁优化1. 偏向锁批量重偏向&批量撤销2. 自旋优化3. 锁粗化4. 锁消除 1. 锁升级原理 前面介绍了对象的几种加锁状态,分别是无锁、偏向锁、轻量级锁和重量级锁。有下面几个关键点: 当开启JVM偏向延迟…

什么是美颜sdk?美颜sdk对比评测、技术评估

为了满足用户对于更美好画面的需求,各种美颜sdk应运而生。本文将深入探讨美颜sdk的概念,进行对比评测,并对其技术进行综合评估。 一、什么是美颜sdk? 美颜sdk使开发者们可以方便地在自己的应用中集成美颜功能,从而提…

前端食堂技术周刊第 107 期:技术博客节、Deno Cron、FEDAY、XState v5、Electron 2023 生态系统回顾

美味值:🌟🌟🌟🌟🌟 口味:烤椰拿铁 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…

like concat()函数

mybatis中为了防止sql注入&#xff0c;使用like语句时并不是直接使用&#xff0c;而是使用concat函数 <if test"goodName ! null and goodName ! "> and good_name like concat(%, #{goodName}, %)</if> concat()函数 1、功能&#xff1a;将多个字符串…