BSTR 、LPCTSTR、CString基本操作

一、CString ,BSTR ,LPCTSTR之间关系和区别


CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵),LPCTSTR只是一个常量的TCHAR指针。

CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。


二、VC中各种字符串的表示法

 

char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。


LP 表示长指针,在WIN16下有长指针(LP)和短指针(P)的区别,而在WIN32下是没有区别的,都是32位,所以这里的LP和P是等价的。


LPSTR 是一个指向以“/0 ”结尾的ANSI字符数组的指针,与char*可以互换使用,在WIN32中较多地使用LPSTR。


LPCSTR 增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。


TCHAR 在采用Unicode方式编译时是wchar_t,在普通时编译成char。 如果定义_UNICODE,声明如:typedef wchar_t TCHAR; 如果没有定义_UNICODE,则声明如:typedef char TCHAR;


LPTSTRLPCTSTR 中的含义就是每个字符是这样的TCHAR。


LPWSTRLPCWSTR 类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。

 

CComBSTR_bstr_t 是对BSTR的封装,BSTR是指向字符串的32位指针。

 

Unicode标准:它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。

三、VC常用数据类型使用转换
 
先定义一些常见类型变量借以说明。


1、BSTRchar* 之间的互相转换


2、VARIANT _variant_tCOleVariant

VARIANT 的结构可以参考头文件“VC98/Include/OAIDL.H”中关于结构体“tagVARIANT”的定义。对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,对于不马上赋值的VARIANT,最好先用 进行初始化,其本质是将vt设置为VT_EMPTY。举个例子:


vt与常用数据的对应关系:


_variant_t 是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。


COleVariant 的使用与_variant_t的方法基本一样,请参考如下例子:


四、将WPARAMLPARAM 等32位数据(DWORD)分解成两个16位数据(WORD)。



五、C语言串的基本运算


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值