MFC:字符串处理

例子

cpp 复制代码
	//多字节
	char* szTest = "abc多字节";
	int nLen = strlen(szTest);//9

	//宽字节
	wchar_t* szTest2  = L"abc多字节";
	int nlen2 = wcslen(szTest2);//6

	//测试项目配置为Unicode
	wchar_t* szTesz3 = TEXT("abcd");

	//char* -> CString
	CString strTest(szTest);

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

TEXT

根据项目属性自动配置

宽字节

加上L

CString 转换

cpp 复制代码
CString str;
str.Format(TEXT("nChar=%d nRepCnt=%d,nFlags=%d"),nChar,nRepCnt,nFlags);

CString 获取char*

cpp 复制代码
//char* -> CString
	CString 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 互转

cpp 复制代码
LPTSTR  szTest5=szTest2;
	CString strsss = szTest5;

例子

cpp 复制代码
//根据项目配置Unicode
	wchar_t* szTesz3 = TEXT("abcd");

LPTSTR  szTest5=szTesz3;
LPCTSTR szTest6=TEXT("qaz");

	LPSTR szTest7="123";

宏_T

当配UNICODE时候 _T就是L

没有的时候就是ANSI

cpp 复制代码
	LPTSTR szTest8=new TCHAR[32];
	TCHAR* szTest8 = _T("HELLO");

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

_tcs函数

_tcslen

_tcscpy

_tcscat

_tcscmp

例子

cpp 复制代码
    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);
相关推荐
知识领航员9 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
jf加菲猫11 小时前
第21章 Qt WebEngine
开发语言·c++·qt·ui
码农-阿杰11 小时前
深入理解 synchronized 底层实现:从 HotSpot C++ 源码看对象锁与 Monitor 机制
开发语言·c++·
Szime11 小时前
深智微IC华润微代理:MCU选型与工业控制方案推荐
c++
叼烟扛炮12 小时前
C++ 知识点18 内部类
开发语言·c++·算法·内部类
汉克老师12 小时前
GESP5级C++考试语法知识(十五、分治算法(二))
c++·算法·排序算法·分治算法·gesp5级·gesp五级
汉克老师13 小时前
GESP6级C++考试语法知识(五、格雷码)
c++·算法·位运算·异或·gesp6级·gesp六级·格雷码
程序leo源14 小时前
C语言知识总结
c语言·开发语言·c++·经验分享·笔记·青少年编程·c#
沫璃染墨14 小时前
二叉搜索树完全指南:从核心原理到增删查改全实现
开发语言·c++
‎ദ്ദിᵔ.˛.ᵔ₎14 小时前
C++哈希表
数据结构·c++·散列表