`
hcmfys
  • 浏览: 357700 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

VC中常用数据类型转换

阅读更多

 

内容来自http://www.blogcn.com/u/10/82/lasteoo/index.html
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。
我们先定义一些常见类型变量借以说明
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="女侠程佩君";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;
一、其它数据类型转换为字符串
短整型(int)
itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制
itoa(i,temp,2); ///按二进制方式转换
长整型(long)
ltoa(l,temp,10);
二、从其它包含字符串的变量中获取指向该字符串的指针
CString变量
str = "2008北京奥运";
buf = (LPSTR)(LPCTSTR)str;
BSTR类型的_variant_t变量
v1 = (_bstr_t)"程序员";
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);
三、字符串转换为其它数据类型
strcpy(temp,"123";
短整型(int)
i = atoi(temp);
长整型(long)
l = atol(temp);
浮点(double)
d = atof(temp);
四、其它数据类型转换到CString
使用CString的成员函数Format来转换,例如:
整数(int)
str.Format("%d",i);
浮点数(float)
str.Format("%f",i);
字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值
str = username;
五、BSTR、_bstr_t与CComBSTR
CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。
char *转换到BSTR可以这样: BSTR b=_com_util::ConvertStringToBSTR("数据";///使用前需要加上头文件comutil.h
反之可以使用char *p=_com_util::ConvertBSTRToString(b);
六、VARIANT 、_variant_t 与 COleVariant
VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。
对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:
VARIANT va;
int a=2001;
va.vt=VT_I4;///指明整型数据
va.lVal=a; ///赋值
对于不马上赋值的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
BSTR 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_R8
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; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF
_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。
例如:
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;
COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:
COleVariant v3 = "字符串", v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;
七、其它
对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:
LPARAM lParam;
WORD loValue = LOWORD(lParam);///取低16位
WORD hiValue = HIWORD(lParam);///取高16位
对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///取低8位
BYTE hiValue = HIBYTE(wValue);///取高8位


CString str;int i;float f;
//将字符串转换为整型
str="123";
i=atoi(str);
//将字符串转换为单精度型
str="123.123";
f=atof(str);
//将整型和单精度型转换为字符串。
i=123;
f=123.123;
第一次用vc开发应用系统,都是摸着石头过河,因为对数据库的操作颇多,因此也就用到了COleVariant这种万能的数据类型, 和其他数据类型之间的转换自然不能少,苦恼中摸索了不少

CString转int、long、float
int InnerProid = atoi((char *)(LPCSTR)InnerPro);
如果数据库字段是int型

浮点转换成variant
COleVariant((float)alength)
整型转换成variant
COleVariant((long)OuterInsulid,VT_I4)

CString如何转换成char *
(char*)(LPCSTR)strYear

COleVariant如何转变成CString
COleVariant var;
CString smid;
var = GetFieldValue(COleVariant("smid");
var.ChangeType(VT_BSTR);
smid = var.bstrVal

CString如何转变成COleVariant
CString ttt;
COleVariant var;
var.SetString((LPCSTR)ttt, VT_BSTR)

第一次用vc开发应用系统,都是摸着石头过河,因为对数据库的操作颇多,因此也就用到了COleVariant这种万能的数据类型, 和其他数据类型之间的转换自然不能少,苦恼中摸索了不少

CString转int、long、float
int InnerProid = atoi((char *)(LPCSTR)InnerPro);
如果数据库字段是int型

浮点转换成variant
COleVariant((float)alength)
整型转换成variant
COleVariant((long)OuterInsulid,VT_I4)

CString如何转换成char *
(char*)(LPCSTR)strYear

COleVariant如何转变成CString
COleVariant var;
CString smid;
var = GetFieldValue(COleVariant("smid"));
var.ChangeType(VT_BSTR);
smid = var.bstrVal

CString如何转变成COleVariant
CString ttt;
COleVariant var;
var.SetString((LPCSTR)ttt, VT_BSTR)

分享到:
评论

相关推荐

    VC常用数据类型使用转换详解

    本文将深入解析VC中常用数据类型及其转换方式,旨在为开发者提供一个清晰、全面的理解框架。 ### 基础数据类型 在VC中,基础数据类型包括整型(int, long), 浮点型(float, double), 字符型(char),以及字符串处理...

    VC中常用数据类型介绍

    ### VC中常用数据类型介绍 在VC(Visual C++)编程环境中,理解并掌握各种数据类型对于编写高效、可靠的程序至关重要。本篇文章将详细介绍VC中的一些常见数据类型及其用途,帮助开发者更好地理解和应用这些基本构建...

    VC常用数据类型使用转换详解.doc

    CString 的成员函数 Format 可以将各种数据类型转换为字符串。例如: * 整数转换为字符串:str.Format("%d", i); * 浮点数转换为字符串:str.Format("%f", f); * 字符串指针转换为 CString:str = CString(buf); 6...

    vc数据类型转换

    本文将基于网上资源和个人经验总结,详细介绍VC中常用的数据类型转换方法。 #### 基本数据类型之间的转换 1. **整型到字符串:** - `int i = 100;` - `long l = 2001;` - 使用`itoa()`函数可以将整型转换为字符...

    VC常用数据类型的使用

    本文主要探讨了VC++中常用的数据类型的使用和转换方法,这对于初学者来说是一份非常实用的指南。 首先,我们来看看一些基本的数据类型定义,例如: 1. `int` 通常用于存储整数,如`int i = 100;` 2. `long` 用于...

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

    以上就是VC++中常用的数据类型及其操作的详细介绍。理解并熟练运用这些知识点,对于编写高效、稳定的C++代码至关重要。在实际编程过程中,应结合具体需求选择合适的数据类型,并合理利用运算符、控制流程语句、函数...

    VC文件的输入输出

    本文将基于提供的代码示例,深入解析如何在VC(Visual C++)环境下进行文件的读写操作,涵盖的知识点包括但不限于文件流类的使用、错误处理机制、数据格式化以及循环读写等。 ### 文件流类的使用 在C++中,`...

    jinzhizhuanhuan.rar_jinzhizhuanhu

    2. `CInt`、`CLng`、`CDec` 等:这些函数可以将数值转换为特定的数据类型,但不直接支持进制转换。通常需要先使用字符串处理函数来改变数字的表示形式,然后再转换。 3. `Hex`、`Oct` 和 `Bin` 函数:分别用于将数值...

    vc编写的图像处理源程序

    本压缩包包含了一个用VC++编写的图像处理源程序,它提供了对图像进行多种操作的功能,如格式转换、压缩、膨胀、开关和闭合等。下面将详细阐述这些知识点: 1. **图像处理**:图像处理是指通过计算机算法对数字图像...

    VC++网络编程

    7. 数据序列化与反序列化:在网络通信中,数据通常需要进行序列化(将内存中的对象转换为字节流)和反序列化(将字节流恢复为对象)以便在网络间传输。可以使用XML、JSON或自定义格式来实现。 8. 错误处理:网络...

    VCEDIt 行距

    **1.5 MFC中常用类、宏、函数介绍** - **类**: `CWnd`, `CDialog`, `CView`, `CDocument`, `CString`等是MFC中常用的类,它们分别对应不同的功能和应用场景。 - **宏**: `AfxGetMainWnd()`, `AfxMessageBox()`, `...

    c++ mfc入门教程

    **MFC中常用类,宏,函数介绍** MFC中包括了各种常用类,例如用于文档操作的CDocument,以及各种控件类如CEdit、CListBox等。宏和函数方面,包括了MFC提供的字符串处理宏,如_T()宏用于简化TCHAR字符串的使用,还有...

    VC++_MFC入门教程

    - **1.5 MFC中常用类、宏、函数介绍** - 详述MFC中常用类的功能,如CFileDialog、CBitmap、CString等。 - 解释MFC宏的作用,比如AFX_MANAGE_STATE、BEGIN_MESSAGE_MAP等,以及如何正确使用它们。 - 介绍核心函数...

    游戏编程指南.pdf

    - **联合**:联合体中的所有成员共享同一段内存区域,常用于节省内存或实现类型转换。 - **枚举**:枚举类型是一种用户自定义的整型数据类型,用于表示一组固定的数值,如游戏中的方向、状态等。 #### 1.5 控制语句...

    华为C++笔试题(附答案)

    例如,其他数据类型可以直接转换到`CString`对象中,但需要注意类型转换的正确性。 #### 题目七:C++模板类的应用 - 解析:C++模板类提供了一种类型无关的编程方式,可以创建通用的数据结构和算法,具有高度的可...

    Visual_C++MFC入门教程

    - **1.5 MFC中常用类、宏、函数介绍** - **类**:如`CWnd`(窗口类)、`CString`(字符串类)等。 - **宏**:如`AFX_MANAGE_STATE`(管理类状态)。 - **函数**:如`AfxGetMainWnd()`(获取主窗口句柄)。 #### ...

    Visual_C++MFC教程.doc

    - **良好的C/C++基础**:掌握基本语法、数据类型、控制结构等;理解面向对象编程概念(如类、对象、继承、多态);熟悉标准模板库(STL)的使用。 - **理解Windows消息机制**:了解Windows操作系统如何通过消息队列...

    Visual_C++MFC入门教程(免费版).pdf

    - 探讨不同坐标映射方式的使用方法,如逻辑坐标到物理坐标的转换。 - **2.6 多边形和剪贴区域** - 介绍多边形绘制方法以及如何使用剪贴区域限制绘制范围。 #### 第三章:文档视结构 - **3.1 文档视图框架窗口间...

    Visual C++ MFC入门教程

    - **1.5 MFC中常用类,宏,函数介绍** - 类如CWnd、CDialog、CView、CDocument等,分别用于窗口管理、对话框、视图和文档管理。 - 宏如AFX_MSG、BEGIN_MESSAGE_MAP、END_MESSAGE_MAP用于消息映射。 - 函数如...

Global site tag (gtag.js) - Google Analytics