string和CString互换互用详细分析

1716 人浏览 | 时间: 2015-06-23 16:06:09 | 作者: codexia
    string和CString互用的难点就在于宽窄字符的互换问题。如果解决了这个问题,互换互用就不存在问题了。先来说说这两个的基本区别。CString是MFC中的字符串处理类,string是C++标准库的字符串处理类。两个的最适合的场合不一样,string适合于C字符串的地方,因为string内部实现是C字符数组模型,可以很好的处理C风格字符串。而CString则是出身于MFC,作为MFC的考虑,自然考虑的高远,因此给CString的实现增加了通用性,其内部实现是根据环境编码来调整的。如果环境使用Unicode编码形式,那么调用构造函数时,使用的是Unicode版本,因此每个字符就是用两个字节表示,就是宽字符类型字符串,而C风格字符串则是一个字节表示一个字符串的。如果环境使用多字节字符集形式,那么CString内部实现就是一个字节表示一个字符,这与C风格字符串兼容,因此处理起来就很方便了。
    而平常在使用CString时,使用宏_T()或者TEXT()让IDE自动区分宽窄字符,因此就省去了很多问题。但是有时候,也带来了问题。如果对于环境编码不熟悉的朋友,就不知道怎么处理了。有时候也不知道CString内部到底是宽字符还是窄字符。这里说明一下,在IDE的“项目”菜单中,选择”XXX属性”(XXX为工程名字),在“配置属性”>>“常规”>>“字符集”可以区别。改这里的字符集将会对代码中所有含有_T()或者TEXT()的以及T版的函数和变量名等都产生影响。可能就会使代码编译不通过等问题,视具体情况而定。而显式使用W版(宽字符版)和A版窄字符版的函数和变量类型,都不受影响。
   
请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0

相关阅读