Unicode下CString转换为char *

#include <atlbase.h>
USES_CONVERSION;
用T2A()或W2A()
这里总结了在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> 非Unicode下CString可以强制转换为LPCSTR,进而可转换为const char*;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值