Unicode下CString与char *转换

vs2008 Unicode编码CString转换为const char* 、int、void * 、LPWSTR <br /> 1.CStringAm_ServerIP(m_ServerIP);//VS2008 Unicode CString 转 const char *<br /> //服务器地址信息<br /> SOCKADDR_IN addrSock;<br /> addrSock.sin_addr.S_un.S_addr=inet_addr(m_ServerIP);<br /> addrSock.sin_family=AF_INET;                                        阅读详情
 

Unicode下CString与char *转换

 

在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] = '\0';   //多字节字符以'\0'结束

 

方法二:使用函数: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] = '\0'; //添加字符串结尾,注意不是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的形式来保存数据,强制类型转换只会返回第一个字符。

Unicode下

CString转TCHAR

    TCHAR* szMsg = new TCHAR[wcslen(strAdbCmd)];  

    szMsg = strAdbCmd.GetBuffer(strAdbCmd.GetLength());

    strAdbCmd.ReleaseBuffer();

用完了别忘了delete []szMsg;

CString转 char*

      char * charP;

         CString strP;

         WideCharToMultiByte(CP_OEMCP,0,(LPCTSTR)strP,-1,charP,260,0,false);

char* TCHAR*转 CString

         char cstr[20]=”sdaww”;

        TCHAR tcstr[20]=_T(”unicode”);

         CString str=CString(cstr);

        CString str1=CString(tcstr);

  

CString转 int

          CString strNum=_T(“”);

          int value = _ttoi(static_cast<LPCTSTR>(strNum));

          或者

          int value = _ttoi(strNum);

int 转CString

          int ia=1232;

         CString stri= stri.Format(_T(“%d”),ia);

多字节字符集下

Cstring转化为char

转化成数组:

Cstring   str=”convert”;

char char_str [512];

strncpy_s(char_str,(LPCTSTR)str_sum,sizeof(char_str));

转化成char指针:

char * ch_a =(char*)str.GetBuffer(str.GetLength());

char转化为Cstring

Cstring str;

char szBuff[2048];

str.Format("%s",szBuff);

CString 转 int :

n=atoi(str);

 

 

[FPGA高速以太网]基于Verilog与1G/2.5G Ethernet PCS/PMA IP核的2.5G UDP通信实战 本文详细介绍了基于FPGA与1G/2.5G Ethernet PCS/PMA IP核实现2.5G UDP通信的完整实战方案。文章以黑金AX7A200开发板为硬件平台,深入讲解了从硬件选型、IP核配置、Verilog测试逻辑编写到系统调试与性能验证的全过程,重点剖析了利用SGMII接口与GTP收发器实现高速数据传输的关键技术与避坑指南,为FPGA高速以太网应用开发提供了宝贵经验。 阅读详情

相关推荐

三维视觉智能焊接系统:免示教技术的工业应用实践

本文深入探讨了三维视觉智能焊接系统中免示教技术的工业应用实践。该系统通过三维视觉相机实时扫描工件,自动识别焊缝并生成轨迹,将产线换型时间从数小时缩短至几分钟,显著提升了生产柔性。文章详细解析了其核心硬件、算法及工厂部署流程,并展望了与数字孪生、工艺智能化融合的未来趋势。

weixin_29091105的博客 431

Unicode字符集下CString与char *转换

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

字串8的专栏 1218

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

CString转char

1.传给未分配内存的const char* (LPCTSTR)指针.    CString cstr(asdd);   const char* ch = (LPCTSTR)cstr;   ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针.    CString cstr = "ASDDSD";    char *ch =

Beautifully Dream 821

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

Xftp卸载报错1628终极解决指南:深入解析InstallShield残留问题

本文深入解析了Xftp卸载时遇到的1628错误,其根源在于InstallShield安装引擎的残留问题。文章提供了从手动清理注册表项到彻底删除隐藏安装备份文件夹的完整解决方案,并给出了防患于未然的实用建议,帮助用户彻底解决这一经典安装报错。

weixin_29276847的博客 336

CString转char[]在unicode下几种方法

在上面的代码中,我们首先调用 CString 的 GetString 方法获取字符指针,然后将指针转换为 const wchar_t* 类型。在上面的代码中,我们使用 ATL/MFC 提供的 CT2A 类型将 CString 转换为 char[] 类型。该类型会在构造函数中自动分配一个 char[] 缓冲区,将转换后的多字节字符复制到该缓冲区中,并在析构函数中释放该缓冲区。在上面的代码中,我们首先创建一个 CStringA 对象,使用 Format 方法将 CString 对象转换为 char[] 类型。

heroinsky的专栏 1983

Unity半透明物体景深失效?教你用双材质球方案完美解决(附完整Shader代码)

本文深入剖析了Unity中半透明物体导致景深效果失效的根本原因,即半透明物体默认不写入摄像机深度图。针对此问题,文章详细介绍了稳定高效的“双材质球”解决方案,通过为物体附加一个仅写入深度信息的不可见材质,完美修复景深效果,并提供了完整的Shader代码与实现脚本。

weixin_29010003的博客 381

关于CString转换成char*

CString 型和 char* 类型的相互转化  1.CString 转化成 char* 之一:强制类型转换为 LPCTSTR;  这是一种略微硬性的转换,有关“正确”的做法,人们在认识上还存在许多混乱,正确的使用方法有很多,但错误的使用方法可能与正确的使用方法一样多。  我们首先要了解 CString 是一种很特殊的 C++ 对象,它里面包含了三个值:一个指向某个数据缓

1356

混响效果的编程实现:Schroeder混响模型与Moorer型混响

Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。通过调整各个反射器和全通滤波器的参数,可以实现不同的混响效果。

2301_79326857的博客 1082

把静态前端托管进 SAP BTP:HTML5 Application Deployer 与企业级内容部署全攻略

本文介绍了在SAP BTP Cloud Foundry环境中使用HTML5 Application Repository托管前端静态资源的工程化实践。通过HTML5 Application Deployer工具,结合MTA描述、路由配置和服务实例,实现前后端解耦和标准化部署。文章详细阐述了目录结构、关键配置文件、MTA编排以及构建部署流程,并针对大体积前端资源提供了GACD和异步上传两种解决方案。最后说明了如何与AppRouter协同工作,使部署内容可供终端用户访问。这套方法使前端更新无需重启后端,支持团队

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 154

CString and char *

1、多字符集设置下: CString To char*: 1)、 CString str; char *buf = str.GetBuffer(); 2)、 CString str; char *buf = (LPSTR)(LPCSTR)str; char* To CString 1)、...

453

Vue - 萤石云监控 ezuikit 视频实例销毁方案,解决使用stop方法无法销毁EZUIKit实例或销毁后依然占用内存并且监控画面依然有声音问题(解决页面多个监控摄像头画面同时播放,翻页或关闭页

vue2,vue3,萤石,监控摄像头,萤石云销毁视频实例,退出页面销毁,stop销毁原视频流,占用内存怎么办,销毁后视频依旧在后台播放有声音,销毁视频播放器,页面上有多个视频画面怎么销毁某一个,stop方法不生效怎么办,浏览器非常卡,dom销毁,ezuikit-js萤石云播放器Vue中使用beforeDestory销毁播放器实例,调用萤石云ezuikit-js的视频对象销毁,vue使用萤石云监控视频录像回放,不销毁实例会出现离开页面后依旧有监控声音并且占内存问题,不好使,页面崩了,崩溃,视频监控太多,没有用

🏆 前端领域优质创作者 1万+

Unicode下CString转换为char *

#include USES_CONVERSION; 用T2A()或W2A() 这里总结了在Visual C++.NET2005环境中Unicode字符集下CString和char *之间相互转换的几种方法,其实也就是Unicode字符集与MBCS字符集转换。   1、Unicode下CString转换为char *  方法一:使用API:WideCharToMultiByte 进行转

Crazy Tortoise 970

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Unicode编码下CString、char*、BSTR相互转换,char*、wchar_t*相互转换

更多精彩内容,请见:http://www.16boke.com 1、Unicode编码下CString转为char* 方法一:使用API:WideCharToMultiByte进行转换 #include int _tmain(int argc, _TCHAR* argv[]) { CString cstr = _T("test测试"); //获取宽字节字符的大小,大小是按字节计算的 int len = WideCharToMultiByt

踏踏实实的。。。 8316

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Unicode下CString转换成char*

使用Visu Stdio 2013创建MFC应用程序时,遇到了需使用cmd命令的问题,从而遇到了将CString转化成char*的问题(使用winExec执行cmd命令) 在网上找了一些方法都没有作用(只转换了第一个字符),后来才发现不是方法有问题,只是项目的编码不同,我的使用的是Unicode,而他们的使 用的是多字节。 所以解决这个问题的有两种途径,第一种是先把项目的编码字符集改成多字节

zgljl2012的专栏 1078

Unicode下CString转换为char *

来自博客:http://blog.youkuaiyun.com/neverup_/article/details/5664733 今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失。原来CString类对象GetBuffer(),后以后还是unicode编码,所以必须将宽字符转换成char类型那就必须...

尔雅慕客的博客 133

UniCode 下char*转CString ,利用MultiByteToWideChar进行转换,中文乱码的解决方案

使用A2W,A2T这些宏函数是常见的方法,但是中文会乱码,所以采用MultiByteToWideChar进行转换 //计算char *数组大小,以字节为单位,一个汉字占两个字节 int charLen = strlen(sText); //计算多字节字符的大小,按字符计算。 int len = MultiByteToWideChar(CP_ACP,0,sText,cha...

wqwqh的博客 2177

Unicode编码的项目中CString、char* 、wstring、string的相互转换

1、CString转char* 可以使用以下函数: static char* StringToChar(CString str){ //获取字符串大小 int len = WideCharToMultiByte(CP_ACP, 0, str, str.GetLength(), NULL, 0, NULL, NULL); //为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大

cyloser的专栏 1653

Unicode 下char*与CString相互转换

转自:http://blog.youkuaiyun.com/neverup_/article/details/5664733 1、Unicode下CString转换为char *方法一:使用API:WideCharToMultiByte进行转换 CString str = _T("D://校内项目//QQ.bmp"); //注意:以下n和len的值大小不同,n是按字符计算的,l

u010829733的专栏 5075

Unicode下CString和char *之间的互相转换

Unicode下CString和char *之间的互相转换 编辑 删除  CString中存储的字符的数据类型为wchar_t类型。 一、CString转换为char * (1)方法一:使用wcstombs() [cpp] view plain copy print? #include   using namespace std;

rty19910204的博客 3614

Unicode下CString(wchar_t)转换为 char*

Unicode下CString(wchar_t)转换为 char* (2008-12-04 23:56:56) ,平台VC2005,使用Unico

night_cat的专栏 4334

CString与char*转换(Unicode和多字节字符集)

一、使用多字节字符集 1.CString转char* (1)传给未分配内存的const char* (LPCTSTR)指针.  CString cstr="ABC"; const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全. (2)传给未分配内存的指针. CString cstr = "

BCD_not_CBD的博客 1941

Unicode下CString与char*的转换

1、  CString 转换为char* 方法一:        CString origCString("Hello, World!");         wchar_t* wCharString = origCString.GetBuffer(origCString.GetLength()+1);         size_t origsize = wcslen(wCharSt

guoliushui的专栏 872
上一篇: 批处理:修改COM端口号,修改串口号
下一篇: VC资源文件中加入自己的声音资源,使自己的应用程序可以播放声音
gemmo
博客等级 码龄15年 4粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值