VC中常见的数据类型转化

116 篇文章 0 订阅
111 篇文章 0 订阅

一,VC中字符串类型的互相转换

常用的保存字符串的类型有:CStringTCHAR* TCHAR[] char* LPCSTR LPCTSTR LPBYTE

通常把Cstring看作一个转换的中间值。

1.      LPCSTR->Cstring
LPCSTRVC中代表的是char*,但并不能用char*的方式去转换它。它与Cstring可以直接互换,就像以下代码这样:

Cstring strHello;
strHello=”Hello world”;
LPCSTR lpStr=(LPCSTR)strHello;
Cstring str2;
str2=(CString)lpStr;

另外, Cstring类有一成员函数 Format,可以用来把类型转换成 Cstring类型,以上 lpStr转换成 Cstring可以这样表示:
str2.Format(“%s”,lpStr);

2.      LPCTSTR->Cstring
LPCTSTRLPCSTR转换方式是一样的,所不同的是两个类型本身不一样。LPCTSTR表示的是unsigned short*,这样,它可以支持Unicode字符类型,而LPCSTR只支持ANSI字符类型。平常,我们一般可以用LPCTSTR来代替LPCSTR

3.      TCHAR*(char*)->Cstring
TCHARVC中表示的是unsigned short,可以支持Unicode字符集。两类型之间的转换可以像以下这样


TCHAR* myChars = strHello.GetBuffer(strHello.GetLength());
str2=(CString)myChars; //或者str2.Format(“%s”,myChars);

注意: CstringTCHAR*不能用以下代码转换:
myChars = (LPCTSTR)strHello; //Error,Can not Convert from ‘const char*’ to ‘char*’

也不能这样转化:
myChars=(LPTSTR)strHello; //Cstring不能转化为char*

但是可以这样:  
myChars=(LPTSTR)(LPCTSTR)strHello; //先把strHello转化为const char*,再转化为char*

4.      LPBYTE->Cstring
LPBYTEunsigned char*类型,它们之间的转换如下:

LPBYTE lpByte = (LPBYTE)strHello.GetBuffer(strHello.GetLength());GetBuffer返回的是LPTSTR类型

5.      TCHAR[]->Cstring
它们之间的转换又不一样,因为涉及到数组。所以用strcpy函数来进行,strCpy的函数原型如下:
LPTSTR StrCpy(LPTSTR psz1,LPCTSTR )
它们之间的转换如下: 

CHAR strChar[200]
StrCpy(strChar,(LPCTSTR)strHello);
Cstring str2 = (CString)strChar; //或者用Format函数


 

由此可见,Cstring转换到别的类型,都要转成LPCSTR或者LPCTSTR类型这一关(LPCSTR,LPCTSTR代表了const char* , const short*)。然后再通过LPCSTRLPCTSTR转换成别的类型(包括unsigned char*,char*,所以,要把Cstring转换成其它类型,首先看这个类型是不是const char* 或者const short*,如果是,可以直接转,如果不是,首先转成LPCSTRLPCTSTR,再把它们强制转换成相应的字符串类型. 而任何类型转换成Cstring,则需要在前面加上(CString)强制转换即可,或者用Cstring类的成员函数Format


 

二.VC中其它常用类型转换

其中,很多函数都用到<stdlib.h><wchar.h>,如果用到,要把头文件包含进源文件.
1.
字符串转换成其它类型

Double atof(char* string);
Double wtof(const wchar_t* string);
int atoi(const char* string);
_int64 _atoi64(const char* string)
int wtoi(const wchar_t* string);
int64 wtoi64(const wchar_t* string);
long atol(const char* string);
long wtol(const wchar_t* string);

2.其它类型转换成字符型:

char* itoa(int value,char* string,int radix);
char* i64toa(int64 value,char* string,int radix);
char* ui64toa(unsigned int64 value,char* string,int radix);
wchar_t * itow(int value, wchar_t string, int radix);
char* _ltoa(long value,char* string,int radix);




 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值