CStringA和CStringW相互转换解决宽窄字符函数使用问题

5565 人浏览 | 时间: 2016-07-29 17:19:00 | 作者: codexia 会员文章,禁止转载

发现一个程序员专属的导航网站,你肯定不知道,是时候告诉你了,请前去看看吧

    今天又被群里的朋友问起宽窄字符转换的问题。对于宽窄字符的解释,请阅读《字符集、字符编码、C语言字符编码、宽字符之间的关系全面分析》。而就宽窄字符的互换问题,我们可以使用Windows的API函数直接处理,参见《宽字符串与窄字符串的相互转换》。
    当然,如果你在MFC的开发环境中,上述的方法显得非常麻烦。只是你不能利用MFC的环境下,可以选用上述方法,在MFC中,我们可以利用CString类实现这个转换,就比较简单了。但是这样的用法很多人并不熟悉,所以还在到处碰壁。
    我们利用MFC的东西,就经常遇到宽字符函数。有的Windows的API函数还只有Unicode宽字符版本,所以,我们习惯了C语言的字符串风格是很郁闷的。如果你不进行宽窄字符混合编程时,字符串处理是很简单的,一旦混合起来,如果不能将宽窄字符混用用的很溜,经常被卡在这里。
    我们经常会用到C语言的转换函数,如atoi,还会用到CString。默认情况下,项目的字符集是Unicode,也就是宽字符集,此时CString对应的是CStringW,即宽字符类型。这宽字符对应着std::wstring。要想STL的wstring和MFC的CStringW互通互用,记住,使用字符串缓冲地址,而不是类之间直接操作。字符串缓冲地址对应着C字符串的wchar_t*类型。这样就将几个类型串在了一起。原理就是使用C语言字符串作为基础媒介。
    所以,取字符串缓冲地址操作如下:
开通会员付1C币>>阅读全文
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0

相关阅读