ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:20.59KB ,
资源ID:12542156      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12542156.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VC++常用数据类型及其操作详解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VC++常用数据类型及其操作详解.docx

1、VC+常用数据类型及其操作详解VC+常用数据类型及其操作详解目录 一 VC常用数据类型列表 二 常用数据类型转化 2.1数学类型变量与字符串相互转换 2.2 CString及string,char *与其他数据类型的转换和操作 CString,string,char*的综合比较 数学类型与CString相互转化 CString与char*相互转换举例 CString 与 BSTR 型转换 VARIANT 型转化成 CString 型 2.3 BSTR、_bstr_t与CComBSTR 2.4 VARIANT 、_variant_t 与 COleVariant 一VC常用数据类型列表 Type

2、Default Size Description 基础类型全是小写 说明:这些基础数据类型对于MFC还是API都是被支持的 boolean unsigned 8 bit , 取值TRUE/FALSE byte unsigned 8 bit, 整数,输出按字符输出 char unsigned 8 bit, 字符 double signed 64 bit 浮点型 float signed32 bit 浮点型 handle_t Primitive handle type hyper signed 64 bit 整型 int signed 32 bit 整型 long signed 32 bit 整型

3、 short signed 16 bit 整型 small signed 8 bit 整型 void * 32-bit 指向未知类型的指针 wchar_t unsigned 16 bit 16位字符,比char可容纳更多的字符 Win32API常用数据类型全大写 说明: 这些Win32API支持的简单数据类型主要是用来定义函数返回值,消息参数,结构成员。这类数据类型大致可以分为五大类:字符型、布尔型、整型、指针型和句柄型(?). 总共大概有100多种不同的类型, BOOL/BOOLEAN 8bit,TRUE/FALSE 布尔型 BYTE unsigned 8 bit BSTR CComBSTR

4、 _bstr_t 32 bit BSTR是指向字符串的32位指针 是对BSTR的封装 是对BSTR的封装 CHAR 8 bit (ANSI)字符类型 COLORREF 32 bit RGB颜色值 整型 DWORD unsigned 32 bit 整型 FLOAT float型 float型 HANDLE Object句柄 HBITMAP bitmap句柄 HBRUSH brush句柄 HCURSOR cursor句柄 HDC 设备上下文句柄 HFILE OpenFile打开的File句柄 HFONT font句柄 HHOOK hook句柄 HKEY 注册表键句柄 HPEN pen句柄 HWND

5、 window句柄 INT - - LONG - - LONGLONG 64位带符号整型 LPARAM 32 bit 消息参数 LPBOOL BOOL型指针 LPBYTE BYTE型指针 LPCOLOREF COLORREF型指针 LPCSTR/LPSTR/PCSTR 指向8位(ANSI)字符串类型指针 LPCWSTR/LPWSTR/PCWSTR 指向16位Unicode字符串类型 LPCTSTR/LPTSTR/PCTSTR 指向一8位或16位字符串类型指针 LPVOID 指向一个未指定类型的32位指针 LPDWORD 指向一个DWORD型指针 其他相似类型: LPHANDLE、LPINT、L

6、PLONG、LPWORD、LPRESULT PBOOL、PBOOLEAN、PBYTE、PCHAR、PDWORD、PFLOAT、PHANDLE、PINT、PLONG、PSHORT 说明:(1)在16位系统中 LP为16bit,P为8bit,在32位系统中都是32bit(此时等价) (2)LPCSTR等 中的C指Const,T表示TCHAR模式即可以工作在ANSI下也可UNICODE SHORT usigned 整型 其他UCHAR、UINT、ULONG、ULONGLONG、USHORT为无符号相应类型 TBYTE WCHAR型或者CHAR型 TCHAR ANSI与unicode均可 VARIAN

7、T _variant_t COleVariant 一个结构体参考OAIDL.H _variant_t是VARIANT的封装类 COleVariant也是VARIANT的封装类 WNDPROC 指向一个窗口过程的32位指针 WCHAR 16位Unicode字符型 WORD 16位无符号整型 WPARAM 消息参数 MFC独有数据类型 下面两个数据类型是微软基础类库中独有的数据类型 POSITION 标记集合中一个元素的位置的值,被MFC中的集合类所使用 LPCRECT 指向一个RECT结构体常量(不能修改)的32位指针 CString 其实是MFC中的一个类 说明: (1)-表示省略 (2)1B

8、yte=8Bit, 字与机器有关,在8位系统中:字=1字节,16位系统中,1字=2字节,32位中:1字=4字节, 64位中1字=8字节.不要搞混这些概念. 二常用数据类型转化及操作 21 数学类型变量与字符串相互转换(这些函数都在STDLIB.H里) (1)将数学类型转换为字符串可以用以下一些函数: 举例: _CRTIMP char * _cdecl _itoa(int, char *, int);/这是一个将数字转换为一个字符串类型的函数,最后一个int表示转换的进制 如以下程序: int iTyep=3; char *szChar; itoa(iType,szChar,2); coutsz

9、Char;/输出为1010 类似函数列表: _CRTIMP char * _cdecl _itoa(int, char *, int);/为了完整性,也列在其中 _CRTIMP char * _cdecl _ultoa(unsigned long, char *, int); _CRTIMP char * _cdecl _ltoa(long, char *, int); _CRTIMP char * _cdecl _i64toa(_int64, char *, int); _CRTIMP char * _cdecl _ui64toa(unsigned _int64, char *, int);

10、 _CRTIMP wchar_t * _cdecl _i64tow(_int64, wchar_t *, int); _CRTIMP wchar_t * _cdecl _ui64tow(unsigned _int64, wchar_t *, int); _CRTIMP wchar_t * _cdecl _itow (int, wchar_t *, int);/转换为长字符串类型 _CRTIMP wchar_t * _cdecl _ltow (long, wchar_t *, int); _CRTIMP wchar_t * _cdecl _ultow (unsigned long, wchar_

11、t *, int); 还有很多,请自行研究 (2)将字符串类型转换为数学类型变量可以用以下一些函数: 举例: _CRTIMP int _cdecl atoi(const char *);/参数一看就很明了 char *szChar=”88”; int temp(0); temp=atoi(szChar); couttemp; 类似的函数列表: _CRTIMP int _cdecl atoi(const char *); _CRTIMP double _cdecl atof(const char *); _CRTIMP long _cdecl atol(const char *); _CRTIM

12、P long double _cdecl _atold(const char *); _CRTIMP _int64 _cdecl _atoi64(const char *); _CRTIMP double _cdecl strtod(const char *, char *);/ _CRTIMP long _cdecl strtol(const char *, char *, int);/ _CRTIMP long double _cdecl _strtold(const char *, char *); _CRTIMP unsigned long _cdecl strtoul(const c

13、har *, char *, int); _CRTIMP double _cdecl wcstod(const wchar_t *, wchar_t *);/长字符串类型转换为数学类型 _CRTIMP long _cdecl wcstol(const wchar_t *, wchar_t *, int); _CRTIMP unsigned long _cdecl wcstoul(const wchar_t *, wchar_t *, int); _CRTIMP int _cdecl _wtoi(const wchar_t *); _CRTIMP long _cdecl _wtol(const

14、wchar_t *); _CRTIMP _int64 _cdecl _wtoi64(const wchar_t *); 还有很多,请自行研究 22CString及string,char *与其他数据类型的转换和操作 (1)CString,string,char*的综合比较(这部分CSDN上的作者joise的文章 写的很详细,请大家在仔细阅读他的文章. 地址: 或参考附录: (2)转换: 数学类型与CString相互转化 数学类型转化为CString 可用Format函数,举例: CString s; int i = 64; s.Format(%d, i) CString转换为数学类型:举例 C

15、String strValue(1.234); double dblValue; dblValue = atof(LPCTSTR)strValue); CString与char*相互转换举例 CString strValue(“Hello”); char *szValue; szValue=strValue.GetBuffer(szValue); 也可用(LPSTR)(LPCTSTR)对CString/ 进行强制转换. szValue=(LPSTR)(LPCTSTR)strValue; 反过来可直接赋值: char *szChar=NULL; CString strValue; szChar=

16、new char10; memset(szChar,0,10); strcpy(szChar,”Hello”); strValue=szChar; CString 与 BSTR 型转换 CString 型转化成 BSTR 型 当我们使用 ActiveX 控件编程时,经常需要用到将某个值表示成 BSTR 类型.BSTR 是一种记数字符串,Intel平台上的宽字符串(Unicode),并且可以包含嵌入的 NULL 字符。 可以调用 CString 对象的 AllocSysString 方法将 CString 转化成 BSTR: CString str; str = .; / whatever BS

17、TR bStr = str.AllocSysString(); BSTR型转换为CString 如果你在 UNICODE 模式下编译代码,你可以简单地写成: CString convert(BSTR bStr) if(bStr = NULL) return CString(_T(); CString s(bStr); / in UNICODE mode return s; 如果是 ANSI 模式 CString convert(BSTR b) CString s; if(b = NULL) return s; / empty for NULL BSTR #ifdef UNICODE s = b

18、; #else LPSTR p = s.GetBuffer(SysStringLen(b) + 1); :WideCharToMultiByte(CP_ACP, / ANSI Code Page 0, / no flags b, / source widechar string -1, / assume NUL-terminated p, / target buffer SysStringLen(b)+1, / target buffer length NULL, / use system default char NULL); / dont care if default used s.Re

19、leaseBuffer(); #endif return s; VARIANT 型转化成 CString 型 VARIANT 类型经常用来给 COM 对象传递参数,或者接收从 COM 对象返回的值。你也能自己编写返回 VARIANT 类型的方法,函数返回什么类型 依赖可能(并且常常)方法的输入参数(比如,在自动化操作中,依赖与你调用哪个方法。IDispatch:Invoke 可能返回(通过其一个参数)一个 包含有BYTE、WORD、float、double、date、BSTR 等等 VARIANT 类型的结果,(详见 MSDN 上的 VARIANT 结构的定义)。在下面的例子中,假设 类型是一

20、个BSTR的变体,也就是说在串中的值是通过 bsrtVal 来引用,其优点是在 ANSI 应用中,有一个构造函数会把 LPCWCHAR 引用的值转换为一个 CString(见 BSTR-to-CString 部分)。在 Unicode 模式中,将成为标准的 CString 构造函数,参见对缺省:WideCharToMultiByte 转换的告诫,以及你觉得是否可以接受(大多数情况下,你会满意的)。VARIANT vaData; vaData = m_com.YourMethodHere(); ASSERT(vaData.vt = VT_BSTR); CString strData(vaData

21、.bstrVal); 你还可以根据 vt 域的不同来建立更通用的转换例程。为此你可能会考虑: CString VariantToString(VARIANT * va) CString s; switch(va-vt) /* vt */ case VT_BSTR: return CString(vaData-bstrVal); case VT_BSTR | VT_BYREF: return CString(*vaData-pbstrVal); case VT_I4: s.Format(_T(%d), va-lVal); return s; case VT_I4 | VT_BYREF: s.Fo

22、rmat(_T(%d), *va-plVal); case VT_R8: s.Format(_T(%f), va-dblVal); return s; . 剩下的类型转换由读者自己完成 default: ASSERT(FALSE); / unknown VARIANT type (this ASSERT is optional) return CString(); /* vt */ 23 BSTR、_bstr_t与CComBSTR CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。 char *转换到BSTR可以这样: BSTR b=_com_util:Co

23、nvertStringToBSTR(数据);/使用前需要加上头文件comutil.h 反之可以使用char *p=_com_util:ConvertBSTRToString(b); 24(引)VARIANT 、_variant_t 与 COleVariant VARIANT的结构可以参考头文件VC98IncludeOAIDL.H中关于结构体tagVARIANT的定义。 对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子: VARIANT va; int a=2001; va.vt=VT_I4;/指明整型数据 va.lVal=a; /赋

24、值 对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系: unsigned char bVal; VT_UI1 short iVal; VT_I2 long lVal; VT_I4 float fltVal; VT_R4 double dblVal; VT_R8 VARIANT_BOOL boolVal; VT_BOOL SCODE scode; VT_ERROR CY cyVal; VT_CY DATE date; VT_DATE BST

25、R bstrVal; VT_BSTR IUnknown FAR* punkVal; VT_UNKNOWN IDispatch FAR* pdispVal; VT_DISPATCH SAFEARRAY FAR* parray; VT_ARRAY|* unsigned char FAR* pbVal; VT_BYREF|VT_UI1 short FAR* piVal; VT_BYREF|VT_I2 long FAR* plVal; VT_BYREF|VT_I4 float FAR* pfltVal; VT_BYREF|VT_R4 double FAR* pdblVal; VT_BYREF|VT_R

26、8 VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL SCODE FAR* pscode; VT_BYREF|VT_ERROR CY FAR* pcyVal; VT_BYREF|VT_CY DATE FAR* pdate; VT_BYREF|VT_DATE BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH SAFEARRAY FAR* FAR* pparray; VT_ARRAY|* VARIANT FAR* pvarVal

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1