VC中的字符串【转】
来源:互联网 发布:苹果电影下载软件 编辑:程序博客网 时间:2024/05/22 09:44
VC中的字符串【转】
初学VC的时候经常被VC里头的各种字符串定义搞糊涂了,没办法的时候就直接使用CString了反正,这个类总能处理的。后来随着用得多了,渐渐 得明白过来,那些字符串设置还是蛮有道理的。
先来看看最简单的:
CHAR
这个类型是最简单的字符串了,就是一个字节表示一个字符的那种,不过你可别小看它,先弄懂它别的就好说了。接下来我们看看它的两个”变种”
LPSTR
在VC里头这个字符串实际上就是CHAR*,注意如果你把它作为参数传给某个函数的话,就表示它所代表的字符串可以被函数改变。这一点很重要,也就是说 LPSTR可以作为传出参数[in]使用。
LPCSTR
在VC里头这个字符串表示const CHAR*,也就是说它是个常量,如果作为参数传递个函数,它所表示的字符串的值是不能变的,也就是说它只能作为传 入[out]参数使用。
请认真比较上面的一些区别,在下面的字符串中,几乎都是这样划分的。
WCHAR
这个比较容易理解,就是使用两个字节表示一个字符的那种,如果咱们把项目定义为UNICODE的话,所有字符串都是这个了。同样的它也有两个变形LPWSTR和LPCWSTR。
TCHAR
这个字符串最经常使用。为什么呢?因为VC为了大家的方便,比如你想把项目从ANSI(单字节)改为UNICODE(双字节),如果你用的是TCHAR那 么就不用着急了。VC会自动为你转换。
说到底TCHAR就是你在没有定义项目是UNICODE之前它就是了CHAR,否则它就是WCHAR。就这么简单。
现在就不能理解LPTSTR和LPCTSTR是什么意思了吧。
VC中常用的字符串有四种:CHAR, TCHAR, WCHAR, BSTR那么它们之间如何转换呢?
本来这个问题很麻烦,幸好VC为我们提供了现成的函数。先来看看从CHAR到TCHAR
就是这个函数了
CA2T(CHAR*, TCHAR*)
大家来看这里A代表CHAR类型的,T代表TCHAR类型的。
如果要从CHAR转换到LPCTSTR那么就是
CA2CT(CHAR*, LPCTSTR)
你一定已经看出规律了A和T,不用解释了。这里的C代表const记得上次我们说过LPCTSTR就是const TCHAR*哦。现在你一定都明白了。
按照这个规律,我们只要知道四种字符串的”代号”就可以在它们之间自由的做转换了。下面就是他们的代号。
CHAR — A
TCHAR — T
BSTR — OLE
WCHAR — W
const — C
实际上在ATL 7.0中,可以使用下面的宏来处理字符串转换问题:
CSourceType2[C]DestinationType[EX]
SourceType和DestinationType就是上面说到的类型。比如我们这么写 CA2T, CA2W, CW2T, CW2A等等
下面是一个字符串转换的例子。
#include “atlstr.h”
void func( LPSTR lpsz )
{
…
LPWSTR x = CA2W(lpsz)
// do something with x
…
}
- VC中的字符串【转】
- vc中的字符串
- vc中的字符串分割
- VC++中的字符串
- VC中的字符串操作
- VC中的字符串
- VC中的字符串处理函数
- VC中的字符串转换宏
- VC中的字符串转换宏
- VC中的字符串表示方法
- VC MFC 中的字符串转换
- VC中的字符串转换宏
- VC 拆分字符串【转】
- VC# 2005中的字符串和正规表达式
- VC# 2005中的字符串和正规表达式
- VC++中的类型转换和字符串操作
- VC中的宽窄字符串相互转换
- VC++字符串
- 求线段交点
- 转载)爱加密亮相2015广州国际游博会,弘扬安全正能量
- ViewHolder工具类实现
- fragment(8)根据id查找fragment
- 【Android SDK程序逆向分析与破解系列】之三:Android可执行程序DEX分析(二)
- VC中的字符串【转】
- C# - String.Empty vs ""
- JS中判断null、undefined与NaN的方法
- 安卓WIFI原理浅析
- 程序化交易系统总结
- 漫谈高数 特征向量物理意义
- iText中输出中文
- Ride to School
- EasyUi---searchbox 条件查询