字符集转换

windows字符集


前言

简介:windows字符集种类&字符集间转换(C++)


提示:以下是本篇文章正文内容,下面案例可供参考

一、多字节&宽字节

多字节:老外用的,一个字符对应一个字节。
在这里插入图片描述
宽字节:中文,一个字符对应多个字节。(Unicode: utf-8 3个; GBK 2个;)
在这里插入图片描述

二、多字节&宽字节 字符串转换

1.多字节转为宽字节

代码如下(示例):

//多字节转为宽字节
//字节前加L将多字节转为宽字节
MessageBox(L"为了部落");
//TEXT是自适应编码的转换( 注意括号)
MessageBox(TEXT("为了联盟"));

2.统计多字节&宽字节字符串长度

代码如下(示例):

	//统计多字节字符串长度
	int num1 = 0;
	//const char *p1 = "AAAA";
	char *p1 = "AAAA";
	num1 = strlen(p1);

	//统计宽字节字符串长度
	int num2 = 0;
	wchar_t *p2 = L"AAAA";
	num2 = wcslen(p2);

三、char *、CString(MFC)、string(C++ stl) 相互转换

char * ——最基础的字符串类型(char *(多字节);wchar_t *(宽字节));
CString ——MFC中封装的字符串类型(CStringA(多字节);CStringW(宽字节));
string ——C++ stl中封装的字符串类型(string(多字节);wstring(宽字节));

1.char * 与 CString之间的转换

代码如下(示例):

	//char*与CString之间的抓换
	
	//char* -> CString
	char * p3 = "CCC";
	CString str = CString(p3);

	//CString -> char *
	CStringA tmp; //定义一个中间变量
	tmp = str;
	char * pp = tmp.GetBuffer();

2.char * 与 string之间的转换

代码如下(示例):

	//char*与string之间的抓换
	#include <string>

	//char* -> string,转换支持隐式类型转换
	char * p = "aaa";
	string str = p;

	//string -> char*,需使用c_str()函数
	const char * pp = str.c_str();  //string -> const char*
	char * pp1 = const_cast<char*>(pp); //const char* -> char*

3.CString 与 string之间的转换

CString 与 string之间无法直接转换,需要借助char*做为桥梁实现,此处不再赘述;


总结

重点需要明确集中字符类型的对应的平台&区别:
最基础的字符串类型——char *(多字节);wchar_t *(宽字节);
MFC中封装的字符串类型——CStringA(多字节);CStringW(宽字节);
C++ stl中封装的字符串类型——string(多字节);wstring(宽字节);

最后记录一个字符类型转换的参考链接:https://blog.csdn.net/rongrongyaofeiqi/article/details/52442169?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值