推荐给好友   您现在的位置: 主页 > 编程文档 > VC文档 > 使用技巧 > VC++常用数据类型及其操作详解

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

时间:2010-03-03 20:27 来源:未知 作者:admin 收藏到:[百度书签] [QQ书签]

目录

一.              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

附录CString及字符串转及操作详解

 

参考书籍:CSDN,<<MFC深入浅出(Second Edit)>>

 

 

                             一.VC常用数据类型列表

 

 
 Type
 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
 整型
 
short
 signed 16 bit
 整型
 
small
 signed 8 bit
 整型
 
void *
 32-bit
 指向未知类型的指针
 
wchar_t
 unsigned 16 bit
 16位字符,比char可容纳更多的字符
 
 
 
 
 
Win32

API

 


 说明: 这些Win32API支持的简单数据类型主要是用来定义函数返回值,消息参数,结构成员。这类数据类型大致可以分为五大类:字符型、布尔型、整型、指针型和句柄型(?). 总共大概有100多种不同的类型,
 
BOOL/BOOLEAN
 8bit,TRUE/FALSE
 布尔型
 
BYTE
 unsigned 8 bit
 
 
BSTR

CComBSTR

_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
 
 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、LPLONG、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均可
 
VARIANT

_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)1Byte=8Bit,

字与机器有关,在8位系统中:字=1字节,16位系统中,1字=2字节,32位中:1字=4字节,

64位中1字=8字节.不要搞混这些概念.

 

 

二.常用数据类型转化及操作

2.1 数学类型变量与字符串相互转换(这些函数都在STDLIB.H里)

(1)将数学类型转换为字符串可以用以下一些函数:

举例: _CRTIMP char * __cdecl _itoa(int, char *, int);//这是一个将数字转换为一个字符串类型的函数,最后一个int表示转换的进制

如以下程序:

int iTyep=3;

char *szChar;

itoa(iType,szChar,2);

cout<<szChar;//输出为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);

_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_t *, int);

还有很多,请自行研究

(2)将字符串类型转换为数学类型变量可以用以下一些函数:

举例: _CRTIMP int  __cdecl atoi(const char *);//参数一看就很明了

char *szChar=”88”;

int temp(0);

temp=atoi(szChar);

cout<<temp;

类似的函数列表:

_CRTIMP int    __cdecl atoi(const char *);

_CRTIMP double __cdecl atof(const char *);

_CRTIMP long   __cdecl atol(const char *);

_CRTIMP 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 char *, 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 wchar_t *);

_CRTIMP __int64   __cdecl _wtoi64(const wchar_t *);


文章tags:操作(95)数据类型(6)转换(2)VC++(2)

顶一下
0
0%
踩一下
(0)
0%

Copyright © 2010 代码天下 版权所有
ad