MFC基础之字符集,Unicode字符集,多字节字符集

本文详细讲解了MFC中多字节字符集与Unicode字符集的区别,重点介绍了wchar_t与TCHAR在处理中文乱码中的作用,以及LPSTR、LPCSTR和LPCWSTR在不同字符集下的使用。通过实例演示了如何避免乱码并确保跨平台兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MFC基础之字符集

1 多字节字符集

	ANSI字符集通常使用0x00~0x7f 范围的1个字节来表示1个英文字符,超出的部分使用
0x80-0xFFFF来编码的。
	我们在平常使用的C++,char[]就是一种标准的ANSI字符,如果在MFC将字符集设置
为了多字节,那么char[]的数据在MFC上显示时会大概率的显示乱码。并且char[]只能处理
ANSI字符集的数据

2 unicode字符集

我们通常设置MFC的字符集是Unicode,他很好的解决了中文乱码问题。

在这里插入图片描述

2.1 wchar_t

	wchar_t是C++中拓展的一个字符串模式,主要是存储unicode编码的字符,
使用lstarcat进行字符串拷贝,L这个宏代表这个常量字符串是Unicode,代码
如下
	wchar_t szMsgM[256] = L"你好";
	lstrcatW(szMsgM, L",Unicdoe");
	::MessageBoxW(NULL, szMsgM, L"hello", MB_OK);

2.2 TEXT宏与_T宏

	说到TEXT宏,就离不开TCHAR这个自动类型的字符变量,为什么说是自动类型呢?
因为可以在unicode和多字节字符集的环境下通用的。所以我们大多数MFC开发中使用的
就是TCHAR和TEXT宏来进行字符串的声明至于_T和TEXT,其实功能是一样的。
	TCHAR szMsgT[256] = TEXT("hello");
	_tcscat(szMsgT, TEXT(",AUTO THCAR"));
	::MessageBox(NULL,szMsgT,TEXT("hello"), MB_OK);

2.3 字符串指针类型

LPSTR
	长的字符串指针,类似于char*的功能。
LPCSTR
	长的常量字符串指针,相当于LPSTR加了一个const
LPCWSTR
	长的宽字节字符串指针,只能用于unicode字符集,所以他接收的就是TEXT宏包
围到了字符串。
	LPSTR st = "PSTR";
	LPCSTR stc = "PCSTR";
	LPCWSTR stcw = TEXT("jjjj");
	::MessageBox(NULL, stcw, stcw, MB_OK);

注意:多字节一个中文长度是2,unicode一个中文长度是1,如果以后,在非unicode字符集模式下计算中文字符串长度就不是strlen那么简单了,就要通过判断字符是否超过0x7f,来一个一个计算字符长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值