memcpy 和自写代码拷贝缓冲区的比较(原创)- -| 回首页 | 2004年索引 | - -VC中的字符串(2)——转换(原创)

VC中的字符串(原创)- -

                                      

初学VC的时候经常被VC里头的各种字符串定义搞糊涂了,没办法的时候就直接使用CString了反正,这个类总能处理的。后来随着用得多了,渐渐得明白过来,那些字符串设置还是蛮有道理的。


初学VC的时候经常被VC里头的各种字符串定义搞糊涂了,没办法的时候就直接使用CString了反正,这个类总能处理的。后来随着用得多了,渐渐得明白过来,那些字符串设置还是蛮有道理的。

 

先来看看最简单的:
CHAR
这个类型是最简单的字符串了,就是一个字节表示一个字符的那种,不过你可别小看它,先弄懂它别的就好说了。接下来我们看看它的两个"变种"

LPSTR
在VC里头这个字符串实际上就是CHAR*,注意如果你把它作为参数传给某个函数的话,就表示它所代表的字符串可以被函数改变。这一点很重要,也就是说LPSTR可以作为传出参数[in]使用。

LPCSTR
在VC里头这个字符串表示const CHAR*,也就是说它是个常量,如果作为参数传递个函数,它所表示的字符串的值是不能变的,也就是说它只能作为传入[out]参数使用。

请认真比较上面的一些区别,在下面的字符串中,几乎都是这样划分的。

WCHAR
这个比较容易理解,就是使用两个字节表示一个字符的那种,如果咱们把项目定义为UNICODE的话,所有字符串都是这个了。同样的它也有两个变形LPWSTRLPCWSTR

TCHAR
这个字符串最经常使用。为什么呢?因为VC为了大家的方便,比如你想把项目从ANSI(单字节)改为UNICODE(双字节),如果你用的是TCHAR那么就不用着急了。VC会自动为你转换。
说到底TCHAR就是你在没有定义项目是UNICODE之前它就是了CHAR,否则它就是WCHAR。就这么简单。
现在就不能理解LPTSTRLPCTSTR是什么意思了吧。

这里权作抛砖引玉,要是有任何不对的地方,欢迎大家批评指正哦。
下次有空,咱们来谈谈这几种字符串这间的转换为题。对了还有一种类型是BSTR,在COM中经常使用,咱们也在下次讨论吧。


- 作者: surfirst 2004年11月10日, 星期三 16:49 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=222457

回复

评论内容: