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

MFC:字符串处理

例子

	//多字节char* szTest = "abc多字节";int nLen = strlen(szTest);//9//宽字节wchar_t* szTest2  = L"abc多字节";int nlen2 = wcslen(szTest2);//6//测试项目配置为Unicodewchar_t* szTesz3 = TEXT("abcd");//char* -> CStringCString strTest(szTest);//CString->char* CStringA strTmp;strTmp = strTest;char* szTest4 = strTmp.GetBuffer();

TEXT

根据项目属性自动配置

宽字节

加上L

CString 转换

CString str;
str.Format(TEXT("nChar=%d nRepCnt=%d,nFlags=%d"),nChar,nRepCnt,nFlags);

CString 获取char*

//char* -> CStringCString strTest(szTest);//CString->char* CStringA strTmp;strTmp = strTest;char* szTest4 = strTmp.GetBuffer();

UNICODE

两个字节表示一个字符,比如‘A’在ASCII下是一个字符,在UNICODE下是两个,高字符用0填充,汉字在ASCII下是两个字节,在UNICODE下仍旧是2个字节
UNICODE的用处就是表示世界上各种文字

MBCS 多字符集

他是不定长表示世界文字的编码

项目配置

如果是多字符集,则LPSTR就是char*
如果是UNICODE,则对应的是LPWSTR就是unsiged short*

LPSTR ,LPCSTR,LPTSTR,LPCTSTR

LPSTR :32位指针,指向一个字符串,每个字符占用一个字节
LPCSTR:32-bit指针,指向一个常字符串

LPTSTR :32位指针 指向一个字符串 每个字符串可能占用1字节或者2字节,取决于UNICODE是否定义
LPCTSTR:32位指针 指向一个常字符串 每个字符串可能占用1字节或者2字节,取决于UNICODE是否定义

LPTSTR 可以和 CString 互转

LPTSTR  szTest5=szTest2;CString strsss = szTest5;

例子

//根据项目配置Unicodewchar_t* szTesz3 = TEXT("abcd");LPTSTR  szTest5=szTesz3;
LPCTSTR szTest6=TEXT("qaz");LPSTR szTest7="123";

宏_T

当配UNICODE时候 _T就是L
没有的时候就是ANSI

	LPTSTR szTest8=new TCHAR[32];TCHAR* szTest8 = _T("HELLO");

T理解(TCHAR,LPTSTR,LPCTSTR,_T(),_TEXT()._tcsxx()…) 表示一种中间类型,即不表示多字节还是UNICODE,编译时候才决定

_tcs函数

_tcslen
_tcscpy
_tcscat
_tcscmp

例子

    LPTSTR  szTest5=szTest2;LPCTSTR szTest6=TEXT("qaz");LPSTR szTest7="123";LPTSTR szTest8=new TCHAR[32];TCHAR* szTest9 = _T("HELLO多字节");_tcscpy(szTest8,szTest9);int nLen3 = _tcslen(szTest9);CString str12;str12.Format(TEXT("nLen3=%d %d %s"),nLen3,_tcscmp(szTest8,szTest9),szTest8);MessageBox(str12);
http://www.lryc.cn/news/348410.html

相关文章:

  • 虚拟仿真云平台在教育应用中的优势和意义
  • CPU的的处理流程如何快速记忆
  • AI视频教程下载:基于OpenAl、LangChain、 Replicate开发AI应用程序
  • 【C++】继承相关(基类与派生类的继承关系以及细节整理)
  • 【Web后端】监听器Listener
  • C/C++ 初级球球大作战练手
  • ES6之字符串的扩展
  • 微信小程序开发,构建NPM报错解决
  • 【异常】SpringBoot整合RabbitMQ-发送消息报错
  • 通过钉钉卡片进行工单审批
  • C语言中的控制语句:深入解析与案例实践2
  • 【ARM Cortex-M 系列 2.1 -- Cortex-M7 Debug system registers】
  • 深入解析C#中的async和await关键字
  • 【VUE.js】前端框架——未完成
  • 开源的文件压缩和解压缩软件7-Zip
  • 搜维尔科技:Patchwork 3D 新功能:爆炸视图动画
  • Redis——RedLock、Zookeeper及数据库实现分布式锁
  • OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析
  • 记录一次 vue2 前端项目整合过程
  • 物联网五层架构分析
  • 【Java EE】多线程(三)线程状态
  • FFmpeg常用API与示例(一)—— 工具库篇(av_log、AVDictionary、avio)
  • 日志的基本用法
  • 什么是页分裂、页合并?
  • 软件2班20240513
  • 嵌入式学习-时钟树
  • 对博客系统基本功能进行自动化测试(Junit + Selenium)
  • 《换你来当爹》:AI驱动的养成游戏,探索虚拟亲子关系的新模式
  • 在idea中使用vue
  • Linux系统编程:进程控制