天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 9|回复: 0

[转载]Unicode字符集下CString与char *转换 (解决中文乱码等)

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
[code]UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家分享。
先总结一下网上找到的三种转换的方法:

方法一:使用函数setlocale

    setlocale(LC_ALL,"chs");

    需要包含头文件#include <locale.h>

    此方法的思路是配置地域化信息。通常在需要输入输出中文的时候设置一下,就没问题了,setlocale详情 点我

方法二:使用函数:T2A、W2A

            CString str = _T("D://校内项目//QQ.bmp");

             //声明标识符
             USES_CONVERSION;

            //调用函数,T2A和W2A均支持ATL和MFC中的字符转换
             char * pFileName = T2A(str);   
            //char * pFileName = W2A(str); //也可实现转换

           注意:有时候可能还需要添加引用#include  <afxpriv.h>

    使用此方法要注意声明标识符,T2A、W2A详情 点我

方法三:使用API:WideCharToMultiByte进行转换

             CString str = _T("D://校内项目//QQ.bmp");

           //注意:以下n和len的值大小不同,n是按字符计算的,len是按字节计算的
             int n = str.GetLength();    // n = 14, len = 18

            //获取宽字节字符的大小,大小是按字节计算的
             int len = WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL);

            //为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小
           char * pFileName = new char[len+1];  //以字节为单位

           //宽字节编码转换成多字节编码
            WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),pFileName,len,NULL,NULL);

           WideCharToMultiByte(CP_ACP,0,str,str.GetLength() + 1 ,pFileName,len + 1 ,NULL,NULL);

             pFileName[len+1] = '/0';  //多字节字符以'/0'结束

这三种方法都是感觉比较靠谱的,也有很多人验证了可以成功,但是在我用的时候很悲催,三种方法都不行,经过仔细的考虑,发现第三种方法应该是万无一失,最保险的方法啊,后来经过仔细查找,原来是参数出了问题,黄色被我划掉的是网上流传的比较广泛的方法,WideCharToMultiByte(CP_ACP,0,str,str.GetLength() + 1 ,pFileName,len + 1 ,NULL,NULL);是我验证成功的写法,至于为什么是这样,留给大家自己思考。WideCharToMultiByte详情 点我

小弟才疏学浅,写的不对,敬请指正!



----------------------------------------------------------------------------------

-----------------------------------------------------------------------------------

------------------------------------------------------------------------------------

在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set),这样导致在VC6.0中非常简单实用的各类字符操作和函数在VS2005环境下运行时会报各种各样的错误,这里总结了在Visual C++.NET2005环境中Unicode字符集下CString和char *之间相互转换的几种方法,其实也就是Unicode字符集与MBCS字符集转换。

1、Unicode下CString转换为char *

方法一:使用API:WideCharToMultiByte进行转换

             CString str = _T("D:\校内项目\QQ.bmp");

            //注意:以下n和len的值大小不同,n是按字符计算的,len是按字节计算的
             int n = str.GetLength();    // n = 14, len = 18

            //获取宽字节字符的大小,大小是按字节计算的
            int len = WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL);

            //为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小
            char * pFileName = new char[len+1];   //以字节为单位

            //宽字节编码转换成多字节编码
            WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),pFileName,len,NULL,NULL);

            pFileName[len+1] = '';   //多字节字符以''结束

方法二:使用函数:T2A、W2A

            CString str = _T("D:\校内项目\QQ.bmp");

             //声明标识符
            USES_CONVERSION;

            //调用函数,T2A和W2A均支持ATL和MFC中的字符转换
            char * pFileName = T2A(str);  
            //char * pFileName = W2A(str);  //也可实现转换

           注意:有时候可能还需要添加引用#include  <afxpriv.h>

2、Unicode下char *转换为CString

方法一:使用API:MultiByteToWideChar进行转换

              char * pFileName = "D:\校内项目\QQ.bmp";

             //计算char *数组大小,以字节为单位,一个汉字占两个字节
             int charLen = strlen(pFileName);

             //计算多字节字符的大小,按字符计算。
             int len = MultiByteToWideChar(CP_ACP,0,pFileName,charLen,NULL,0);

             //为宽字节字符数组申请空间,数组大小为按字节计算的多字节字符大小
             TCHAR *buf = new TCHAR[len + 1];

              //多字节编码转换成宽字节编码
             MultiByteToWideChar(CP_ACP,0,pFileName,charLen,buf,len);

             buf[len] = '';  //添加字符串结尾,注意不是len+1

             //将TCHAR数组转换为CString
             CString pWideChar;
             pWideChar.Append(buf);

             //删除缓冲区
             delete []buf;

方法二:使用函数:A2T、A2W

              char * pFileName = "D:\校内项目\QQ.bmp";

             USES_CONVERSION;
             CString s = A2T(pFileName);

             //CString s = A2W(pFileName);

方法三:使用_T宏,将字符串转换为宽字符

           //多字节字符集,在vc6和vc7种可以编译通过的语句,但VS2005不能通过,默认为Unicode字符集
           //AfxMessageBox("加载数据失败",0);

            //书写代码使用TEXT("")或_T(""),文本在UNICODE和非UNICODE程序里都通用
            AfxMessageBox(_T("加载数据失败"),0);  

      注意:直接转换在基于MBCS的工程可以,但在基于Unicode字符集的工程中直接转换是不可行的,CString会以Unicode的形式来保存数据,强制类型转换只会返回第一个字符。

TrackBack:http://topic.csdn.net/t/20050608/14/4068106.html

                   http://houjixin.blog.163.com/blog/static/35628410200922595225193/

                   http://hi.baidu.com/flobert_young/blog/item/6f93fd0a3ec83f1894ca6b50.html

                   http://hi.baidu.com/proworkspace/blog/item/50cdee44b03f1d86b2b7dc44.html

                   http://msdn.microsoft.com/en-us/library/ms235631.aspx[/code]

 

 

 

 

[转载]Unicode字符集下CString与char *转换 (解决中文乱码等)

该用户从未签到

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-7-28 09:28:43 | 显示全部楼层
  法拉利膜材作为一种高性能的建筑材料,在建筑、汽车及广告等多个领域有着广泛的应用。以下是对法拉利膜材型号、特点及优点的详细分析:
[img]http://www.mjgou.com/data/attachment/forum/202403/13/223041uiqmeujen4jjj6zv.jpg[/img]
[b]一、法拉利膜材型号[/b]
法拉利膜材有多种型号,包括但不限于以下几种:1302 S2 Flexlight Advanced:这是一种高性能IV型柔性复合膜材,以其卓越的透光性、耐久性和易维护性而受到青睐。942、1202 S2、1002 S2、902 S2、1212 S2、912 S2:这些型号同样属于法拉利膜材系列,各自具有不同的特性和适用范围,但具体特点需根据具体型号进一步分析。需要注意的是,法拉利膜材的型号可能随着产品更新换代而有所变化,具体型号及其特性请参考最新产品资料。
[img=860,1255]http://www.mjgou.com/data/attachment/forum/202403/13/223254bbblwlbvbvsbwlsl.jpg[/img]
[b]二、法拉利膜材特点[/b]
法拉利膜材的特点主要体现在以下几个方面:
1、高强度与耐用性:法拉利膜材采用高强度材料制成,具有良好的抗拉强度和撕裂强度,能够承受较大的外力作用而不易破损。耐用性强,能够在恶劣气候条件下保持稳定的性能,延长使用寿命。
2、透光性与美观性:部分型号如1302 S2 Flexlight Advanced具有高透光性,能够在保持室内光线充足的同时,提供清晰的视野。膜材表面平整光滑,色彩丰富多样,能够满足不同建筑和装饰需求,提升整体美观性。
3、轻质与灵活性:法拉利膜材重量较轻,便于运输和安装,能够降低施工成本和时间。膜材具有一定的柔韧性,能够适应各种复杂形状和结构的设计要求。
4、环保与可回收性:法拉利膜材符合环保要求,部分材料可回收利用,减少了对环境的影响。
[img]http://www.mjgou.com/data/attachment/forum/202403/13/223128owhn0099rrds5h5y.jpg[/img]
[b]三、法拉利膜材优点[/b]
法拉利膜材的优点主要体现在以下几个方面:
1、提升建筑性能:高强度与耐用性使得法拉利膜材能够提升建筑的稳定性和安全性,延长使用寿命。透光性与美观性使得建筑内部光线充足、视野开阔,同时提升整体美观度。
2、降低施工成本:轻质特性使得运输和安装成本降低,施工效率提高。膜材的柔韧性使得施工更加灵活多变,能够适应各种复杂地形和结构要求。
3、节能环保:部分材料可回收利用,符合环保要求,减少了对环境的影响。良好的透光性能够减少室内照明需求,降低能耗。
4、广泛应用领域:
法拉利膜材不仅适用于建筑领域(如体育设施、商业设施、文化设施、交通设施等),还广泛应用于汽车及广告领域(如高档车辆贴膜保护和装饰、广告招贴等),展现出其多功能的特性。

综上所述,法拉利膜材以其高强度、耐用性、透光性、美观性、轻质灵活性以及环保可回收性等优点,在建筑、汽车及广告等多个领域发挥着重要作用。具体型号的选择应根据实际需求和应用场景进行综合考虑。
[url=http://www.mjgou.com/forum-17-1.html][size=89030][color=Red]法拉利膜材中国代理商 - 膜结构网[/color][/size][/url]
[转载]Unicode字符集下CString与char *转换 (解决中文乱码等)

该用户从未签到

主题

0

回帖

2

积分

新手上路

积分
2
发表于 2024-8-6 10:42:43 | 显示全部楼层
丹氟斯膜材 PTFE膜材详细介绍
[b]一、丹氟斯膜材概述[/b]
丹氟斯膜材作为一种高品质的建筑材料,在市场上享有较高的声誉。其中,PTFE(聚四氟乙烯)膜材是丹氟斯品牌下的一种重要产品。PTFE膜材因其独特的性能和广泛的应用领域而备受关注。
[b]二、PTFE膜材的基本信息[/b]
1. 材质组成
PTFE膜材是一种由聚四氟乙烯(PTFE)树脂制成的合成材料,也被称为聚四氟乙烯。这种膜材是在超细玻璃纤维织物上涂上聚四氟乙烯树脂而成的,具有优良的物理和化学性能。
2. 外观与颜色
PTFE膜材的外观通常为白色或略带黄色,表面光滑,具有纤维状结构。其膜面颜色为乳白、半透明,具有较高的光线反射率(70~80%)和一定的透光率(10~50%)。
[b]三、PTFE膜材的性能特点[/b]
1. 高强度
PTFE膜材的最大特点是强度高,即使厚度较薄,其拉伸强度也能达到较高水平,甚至可与钢材相媲美。这使得PTFE膜材在承受结构荷载方面表现出色。
2. 耐高温与耐腐蚀
PTFE膜材具有出色的耐高温和耐腐蚀性能。其布粘涂料可以在260摄氏度连续使用,高使用温度可达290至320摄氏度。同时,它还能有效抵抗化学腐蚀和紫外线侵蚀,不易老化。
3. 自洁性
PTFE膜材的自洁性非常优异。雨水可以冲刷掉膜材表面的附着物,保持膜材的清洁和美观。这一特性使得PTFE膜材在户外使用时能够显著减少维护成本。
4. 透光性与光学性能
PTFE膜材具有较高的透光率,能够充分利用自然光线,为建筑内部提供良好的照明效果。同时,其独特的光学性能还能防止眩目和紫外线透过,保护内部装饰材料和设备不受损害。
5. 使用寿命长
PTFE膜材的使用寿命非常长,一般可达25年以上。这得益于其优异的耐候性和物理化学性能稳定性。
[b]四、丹氟斯PTFE膜材的应用领域[/b]
丹氟斯PTFE膜材凭借其卓越的性能特点,在多个领域得到了广泛应用。主要包括:
1. 大型公共设施
如体育场馆的屋顶系统、机场大厅、展览中心等。这些场所对建筑材料的要求较高,需要能够承受较大的荷载和恶劣的环境条件。PTFE膜材凭借其高强度、耐高温、耐腐蚀等特性,成为这些场所的理想选择。
2. 环保与能源领域
PTFE膜材的高透光性和自洁性使得它在环保和能源领域也有广泛应用。例如,在太阳能光伏板中使用PTFE膜材可以提高光伏板的发电效率并延长使用寿命。
[b]五、总结[/b]
丹氟斯PTFE膜材作为一种高品质的建筑材料,以其独特的性能和广泛的应用领域赢得了市场的认可。随着科技的不断进步和人们对建筑材料性能要求的不断提高,PTFE膜材将在更多领域展现出其独特的魅力和价值。

 

 

 

 

[转载]Unicode字符集下CString与char *转换 (解决中文乱码等)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:28 , Processed in 0.157391 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表