当前位置: 首页 > 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头文件。

相关文章:

【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#…...

《漫长的等待》—— 读后感

前几天下班地铁上,人太多,看技术书籍看不进去,翻阅微信读书,看到了这本书,看了几章免费的章节,因为后续需要买会员就没有继续读,但是这几天偶尔还是会想到书籍中的情节,所以今天充了…...

基于ROPNet项目训练modelnet40数据集进行3d点云的配置

项目地址: https://github.com/zhulf0804/ROPNet 在 MVP Registration Challenge (ICCV Workshop 2021)(ICCV Workshop 2021)中获得了第二名。项目可以在win10环境下运行。 论文地址: https://arxiv.org/abs/2107.02583 网络简介…...

力扣215. 数组中的第K个最大元素

堆排序 前言 面试中著名的 TopK 排序;常见的解法有冒泡排序、堆排序;更深入的思路可以参考:拜托,面试别再问我TopK了!!!使用了堆排序的算法,关于堆可以参考:堆数据结构的…...

轻量封装WebGPU渲染系统示例<40>- 多层材质的Mask混合(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/MaskTextureEffect.ts 当前示例运行效果: 两层材质效果: 三层材质效果: 此示例基于此渲染系统实现,当前示例TypeScript源码如下: export c…...

程序员的实用网站导航与推荐

当你遇到问题时 Stack Overflow:订阅他们的每周新闻和任何你感兴趣的主题Google:全球最大搜索引擎必应:在你无法使用Google的时候CSDN:聊胜于无AI导航一号AI导航二号 新闻篇 OSCHINA:中文开源技术交流社区 针对初学…...

上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

今年的校招基本已经进入大规模的开奖季了,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好…...

【halcon】C# halcon 内存暴增

1 读取图片需要及时手动释放 一个6M的图片通过halcon进行加载&#xff0c;大约会消耗200M的内存&#xff0c;如果等待GC回收&#xff0c;而你又在不停的读取图片&#xff0c;你的内存占用&#xff0c;将在短时间内飙升。 2 halcon控件显示图片需要清空。 /// <summary>…...

LeetCode130. Surrounded Regions

文章目录 一、题目二、题解 一、题目 Given an m x n matrix board containing ‘X’ and ‘O’, capture all regions that are 4-directionally surrounded by ‘X’. A region is captured by flipping all O’s into X’s in that surrounded region. Example 1: Input…...

【实战教程】PHP如何轻松对接腾讯云COS,实现文件上传下载?

腾讯云提供了一系列丰富的云服务&#xff0c;其中包括对象存储&#xff08;Cloud Object Storage&#xff0c;简称COS&#xff09;&#xff0c;它是一种高可靠性、可扩展性强的云存储服务。本文将介绍如何使用PHP对接腾讯云COS存储服务&#xff0c;实现文件的上传和下载功能。 …...

pytorch学习10-网络模型的保存和加载

系列文章目录 pytorch学习1-数据加载以及Tensorboard可视化工具pytorch学习2-Transforms主要方法使用pytorch学习3-torchvisin和Dataloader的使用pytorch学习4-简易卷积实现pytorch学习5-最大池化层的使用pytorch学习6-非线性变换&#xff08;ReLU和sigmoid&#xff09;pytorc…...

SQL Server 2016(分离和附加数据库)

1、实验环境。 基于上一个实验《SQL Server&#xff08;创建数据库&#xff09;》 2、需求描述。 class数据库的数据文件和事务日志文件都位于C:\db_class目录下。现在需要把class数据库的数据文件和事务日志文件分开存放&#xff0c;数据文件class.mdf存放于原位置&#xff0…...

用友U8 Cloud RegisterServlet SQL注入漏洞复现

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友U8 Cloud RegisterServlet接口处存在SQL注入漏洞,未授权的攻击者可通过此漏洞获取数据库权限,从而盗取用户数据,造成用户信息泄露。 …...

coding创建远程分支。并拉取远程新分支+推送代码

进入coding ----项目----代码仓库---点击 下拉之后查看全部----创建分支 创建分支之后执行下面命令 git branch -a // 查看所有分支 这个时候发现自己创建的分支没有显示这是因为自己在远程创建了分支但是本地还没有分支 执行 git fetch命令 用于从远程仓库获取最新的提交…...

坚鹏:中国工商银行内蒙古分行数字化转型发展现状与成功案例培训

中国工商银行围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局&#xff0c;深入推进数字化转型&#xff0c;加快形成体系化、生态化实施路径&#xff0c;促进科技与业务加速融合&#xff0c;以“数字工行”建设推动“GBC”&#xff08;政务、企业、个人&…...

AIGC发展史

1 AIGC概况 1.1 AIGC定义 AIGC&#xff08;AI Generated Content&#xff09;是指利用人工智能技术生成的内容。它也被认为是继PGC,UGC之后的新型内容生产方式&#xff0c;AI绘画、AI写作等都属于AIGC的具体形式。2022年AIGC发展速度惊人&#xff0c;迭代速度更是呈现指数级发…...

面试题库之JAVA基础篇(二)

String 只读字符串。每次操作会隐式的在内存中new一个跟原字符串一样的StringBuilder对象&#xff0c;然后append号后面的字符串。 StringBuilder 可变字符串对象。线程不安全。 StringBuffer 可变字符串对象。线程安全。 数组 一种线性数据结构&#xff0c;使用连续的…...

[Rust] 可迭代类型, 迭代器, 如何正确的创建自定义可迭代类型

在 Rust 中, for 语句的执行依赖于类型对于 IntoIterator 的实现, 如果某类型实现了这个 trait, 那么它就可以直接使用 for 进行循环. 直接实现 在 Rust 中, 如果一个类型实现了 Iterator, 那么它会被同时实现 IntoIterator, 具体逻辑是返回自身, 因为自身就是迭代器. 但是如…...

MySQL中,text,mediumtext, 和 longtext字符类型

需求 由于项目需要&#xff0c;需要在mysql数据库&#xff0c;储存长文本&#xff0c;长文本格式可能为markdown也可能为html。 思路 测试存入html时&#xff0c;字符类型为varcar 255。很明显字符长度达不到要求。数据库抛错&#xff0c;修改字符类型 解决方案 将原本的字…...

网页开发 JS基础

目录 JS概述 基本语法 数据类型内置方法 DOM对象 查找标签 绑定事件 操作标签 jQuery 查找标签 绑定事件 操作标签 Ajax请求 数据接口 前后端分离 ajax的使用 JS概述 一门弱类型的编程语言,属于基于对象和基于原型的脚本语言. 1 直接编写<script>console…...

HY-MT1.5-1.8B保姆级部署指南:在4090D上快速搭建多语言翻译服务

HY-MT1.5-1.8B保姆级部署指南&#xff1a;在4090D上快速搭建多语言翻译服务 1. 引言 你是否遇到过这样的场景&#xff1a;需要快速翻译大量文档&#xff0c;但担心隐私泄露不敢使用在线服务&#xff1f;或者开发智能硬件产品时&#xff0c;需要内置高质量的离线翻译功能&…...

告别切换烦恼!Ubuntu双输入法配置指南(IBus+Fcitx五笔)

Ubuntu双输入法高效配置指南&#xff1a;IBus拼音与Fcitx五笔的完美共存方案 对于需要同时使用拼音和五笔输入的开发者来说&#xff0c;Ubuntu系统下的输入法配置往往令人头疼。本文将详细介绍如何实现IBus智能拼音与Fcitx五笔输入法的和谐共存&#xff0c;解决框架冲突、优先级…...

工业通信系统安装:从网络架构到现场落地的完整技术指南

一、什么是工业通信系统安装&#xff1f;为什么它比普通弱电施工要求更高&#xff1f;工业通信系统安装&#xff0c;指的是围绕工业生产场景&#xff0c;对控制层、监控层、管理层之间的数据传输链路进行规划、布线、接线、组网、调试、联动和验收的全过程。它不是单纯的网络工…...

Qwen3模型快速部署教程:10分钟搞定GPU环境与首次调用

Qwen3模型快速部署教程&#xff1a;10分钟搞定GPU环境与首次调用 你是不是也对那些动辄几十GB、部署起来让人头大的大模型望而却步&#xff1f;觉得在自己的机器上跑起来一个像样的AI模型&#xff0c;是件门槛很高的事情&#xff1f; 今天&#xff0c;我就带你打破这个刻板印…...

OpenClaw轻量化方案实测:nanobot镜像性能与成本分析

OpenClaw轻量化方案实测&#xff1a;nanobot镜像性能与成本分析 1. 为什么需要轻量化OpenClaw方案 第一次听说OpenClaw时&#xff0c;我就被它的自动化能力吸引了——能让AI像人类一样操作我的电脑&#xff0c;完成各种重复性工作。但当我真正尝试在本地部署标准版OpenClaw时…...

OFA-Image-Caption模型服务监控与告警体系搭建

OFA-Image-Caption模型服务监控与告警体系搭建 你辛辛苦苦把那个能看懂图片并生成描述的OFA模型部署上线了&#xff0c;业务方用得很开心&#xff0c;每天处理着成千上万的图片。但某天深夜&#xff0c;你突然被电话吵醒&#xff1a;“服务挂了&#xff01;所有图片都卡住了&a…...

Qwen3.5-35B-A3B-AWQ-4bit镜像免配置优势:无Python依赖冲突,纯净运行环境

Qwen3.5-35B-A3B-AWQ-4bit镜像免配置优势&#xff1a;无Python依赖冲突&#xff0c;纯净运行环境 1. 镜像核心优势 Qwen3.5-35B-A3B-AWQ-4bit镜像最突出的特点是其开箱即用的纯净环境。与传统AI部署方案相比&#xff0c;这个镜像解决了开发者最头疼的Python依赖冲突问题。通过…...

用Python处理全球植被数据?手把手教你将BEPS模型的.img文件转成GeoTIFF

从.img到GeoTIFF&#xff1a;Python生态数据处理实战指南 引言&#xff1a;当生态学遇上数据科学 在生态学研究领域&#xff0c;BEPS模型生成的全球植被生产力数据&#xff08;GPP/NEP/NPP&#xff09;是理解碳循环和生态系统功能的重要基础。然而&#xff0c;许多研究者第一次…...

Phi-3-mini-128k-instruct与STM32开发:生成嵌入式C代码与调试逻辑

Phi-3-mini-128k-instruct与STM32开发&#xff1a;生成嵌入式C代码与调试逻辑 1. 引言 如果你玩过STM32&#xff0c;尤其是像STM32F103C8T6这种经典的“蓝色药丸”最小系统板&#xff0c;肯定对下面这些场景不陌生&#xff1a;为了点亮一个LED&#xff0c;翻遍数据手册&#…...

三维点云到二维图像投影的实战指南:从原理到代码实现

1. 三维点云投影二维图像的核心原理 第一次接触三维点云投影时&#xff0c;我也被各种坐标系转换绕得头晕。后来发现只要抓住一个核心&#xff1a;三维到二维的投影本质上是坐标系转换的接力赛。想象你拿着手机拍照&#xff0c;物体从现实世界到手机屏幕的旅程&#xff0c;就是…...