CString 与 char * 和 const char*的转换,以及在Unicode项目中的使用.

这是个老的不能再老的话题,实验一个收集一个,解决一个。
CString可以直接强转成LPCTSTR使用:
  1. CString cstr;
  2. TCHAR * a = (LPCTSTR)cstr;
如果需要LPTSTR,只需要继续强转:
 
  1. CString cstr;
  2. TCHAR * a = (LPTSTR)(LPCTSTR)cstr;
 
注意,LPCTSTR和LPTSTR都是宽字符指针。用在Unicode的工程中,上述代码正确。但是,此时a里面的内容是宽字符集,若cstr="22",则a的内容是"0x3200 0x3200",因为00会在第二个字符就遇到,所以写文件的时候如果用普通的fprintf写入第一个2就结束了,因为看到了/0结束符号。如果非Unicode则可以正确写入文件。

如果想把CString转成ASCII的char使用,则需要通过宏T2A完成,并且需要经过GetBuffer(0)作为中转。
  1. USES_CONVERSION;
  2. CString strTime("2008");
  3. const char* st = T2A(strTime.GetBuffer(0));
此时st成功转成const char*类型。此时用普通的fprintf能够正确的写入文件
 
用fprintf写问文件时换行键用/n表示,不要/r。
而在VC的控件里面,需要/r/n一起表示才能实现换行。
一般情况下/n表示换行,表示移到下一行的同列
/r表示回车,表示放到最左边
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值