不同编码情况下字符转换方法

在项目开发中,字符编码转换是个常见问题。本文聚焦于在VS2010环境下,主要讨论Unicode编码(如使用_T()宏)与ASCII编码(如VC6.0)之间的转换。详细整理了CString、string、char*、char[]之间的转换方法,并提供了在Unicode编码下中文字符串转换的实例,确保在VS2010下可运行无误。
摘要由CSDN通过智能技术生成

在实验室做项目,中间遇到很多次这种字符转换的问题。一直都是简单看看,也没有认真分析过问题的原因,直到上次一直弄不出来,这里就仔细整理了一下,希望大家可以参考一下。VS2010环境下默认使用UNICODE编码,即常用_T()宏进行格式转换。在这种情况下,CString使用宽字符编码,宽字符编码对应于窄字符编码。例如中文,中文和英文不同,一个汉字使用两个字节表示,则使用宽字符编码。而英文仅需一个字节即可,故可以用窄字符编码,同样也可使用宽字符编码。

在进行各种字符格式转换时,大家发现有时候网上的方法不好用,原因就是在于不同项目使用的字符编码不同。例如VC6.0使用的ASCII编码,不需用_T()。

这里收集整理了常用的字符串格式,包括CString,string,char*,char[]进行相互转换的方法。希望大家共同学习进步。UNICODE下转换在VS2010下测试完成,保证完全可运行无误!

(一)UNICODE编码下转换方式,默认使用测试字符串均为中文(英文的情况下很容易解决,最直接按位复制即可)
(1)CString与string转换方法

//CString转string
CString str = _T("你好");
CStringA strA(str.GetBuffer(0));
string strTemp = strA.GetBuffer(0);
strA.ReleaseBuffer();
//string转CString
CString strNew(strTemp.c_str());

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值