CString 转化为 const char* 以及WideCharToMultiByte用法实例

今天写一个MFC的小工程,遇到了需要CString对cosnt char*的转换,查阅了网上好多资料,牛们的留言,

可是好多都不能用,之前碰到过字符处理问题,还蛮顺利解决的,今天纠结了好久,就写个贴给遇到同样问题

的朋友.

实例:需要把一个CString的路径字符串转化为const char*.(编码环境unicode).

方法一:

 

  1. void CDataStore::LoadFile(CString FileName)  
  2. {  
  3.   
  4.     FILE *Fp;  
  5.     USES_CONVERSION;  
  6.     const char* Str = T2A(FileName.GetBuffer());  
  7.     if( ( Fp = fopen( Str, "r" ) ) == NULL )  
  8.     {  
  9.         return ;  
  10.     }  
  11. }  

 

由于在unicode环境下,通过GetBuffer读取字符串缓冲区时,读入的时宽字节指针,

于是需要转换为单字节指针,这就可以通过系统宏T2A(W2A)来实现,不要忘了

USES_CONVERSION;...

方法二:

 

  1. void CDataStore::LoadFile(CString FileName)  
  2. {  
  3.     FILE *Fp;  
  4.   
  5.          char Str[1024];  
  6.          WideCharToMultiByte(CP_ACP,0,FileName,-1,Str,1024,NULL,NULL);  
  7.     LPTSTR Str = FileName.GetBuffer();  
  8.     if( ( Fp = fopen( Str, "r" ) ) == NULL )  
  9.     {  
  10.         return ;  
  11.     }  

 

可以通过系统函数WideCharToMultiByte()处理短字节和宽字节的转换,网上说的

(LPCTSTR)等的强制转换在unicode下是不行的,他不是const char*而是const wchar_t*

所以不能使用强制转换来实现CString 到 const char *!

以上代码在VS2010中编译运行通过!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值