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

VC类型的相互化() 一、VC字符串类型互相转换 总是觉得VC中的类型纷繁复杂,扑朔迷离。因为有了Unicode,因为C、C++类型相互化如此不同。保存char的不止char一种,还可以用short,unsigned short,int 等来保存。单单就字符串就有N多种类型,其它类型也不止一个。再加上C++中本来就没有正式的string类型,所以,平常就会碰到很多种相同意思,但不同类型,或相同类型,... 阅读详情

原文出处:不祥

参考url: http://www.cnblogs.com/mugua/archive/2009/03/29/1424629.html

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

      总是觉得VC中的类型纷繁复杂,扑朔迷离。因为有了Unicode,因为C、C++类型相互转化如此不同。保存char的不止char一种,还可以用short,unsigned short,int 等来保存。单单就字符串就有N多种类型,其它类型也不止一个。再加上C++中本来就没有正式的string类型,所以,平常就会碰到很多种相同意思,但不同类型,或相同类型,不同写法的Type.

      如何在他们之间相互转化,也是在学习VC中避免不了的一个问题。

      现来看平时常用的保存字符串的类型有那些?

      Cstring、TCHAR*、 TCHAR[]、 char*、 LPCSTR、 LPCTSTR、 LPBYTE

      以上都是在VC中用的比较多得。他们之间如何转化:

      这里,把Cstring看作一个转换的中间值,任何类型都是相它看齐。

      1. LPCSTR ←→Cstring 
      LPCSTR在VC中代表的是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 
     LPCTSTR和LPCSTR转换方式是一样的,所不同的是两个类型本身不一样。LPCTSTR表示的是unsigned short*,这样,它可以支持Unicode字符类型,而LPCSTR只支持ANSI字符类型。平常,我们一般可以用LPCTSTR来代替LPCSTR。

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

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

     注意:Cstring转TCHAR*不能用以下代码转换:

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 
     LPBYTE是unsigned 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*)。然后再通过LPCSTR或LPCTSTR转换成别的类型(包括unsigned char*,char*),所以,要把Cstring转换成其它类型,首先看这个类型是不是const char* 或者const short*,如果是,可以直接转,如果不是,首先转成LPCSTR或LPCTSTR,再把它们强制转换成相应的字符串类型.

      而任何类型转换成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);

      举例:

char* s="-2309.12E-15";
double x=atof(s);   //out:-2309120E-012
s="-9885 pigs";
int I=atoi(s);              //out:-9885

    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);

     举例:

int i=100;
itoa(i,temp,10); //十进制
itoa(i,temp,2); //二进制

Cstring str;

Str.Fomat("%d",i); //整型to Cstring
Str.Format("%f",f); //Float to CString

C++里面的LPBYTE是什么意思 BYTE为unsignedchar LPBYTEunsignedchar* 阅读详情

相关推荐

C++ LPBYTE

BYTE相当于unsignedchar LPBYTE 相当于unsignedchar*

asiwxy的博客 642

VC字符串类型CString,int,char*,string,wchar_t互相转换代码实例(自闪电博客)

(原文)http://shandian.biz/2103.html VC\MFC当中CStringstringcharchar*char数组、int等类型之间的转换令人晕头向,闪电博客特地搜集多篇文章资料,利用代码实例等清晰的理清他们之间的关系和如何转换,其实非常简单。 这些文章基本上是互相独立的,看完后,闪电博客相信你会用的很容易,文章值得大家收藏。 第一篇文章:VC之CStri...

weixin_30466421的博客 191

LPBYTE CString转换问题

<br />在做一个后台服务应用时,需要修改注册表,为了写上值名称,用到<br />LONGRegSetValueEx( <br />  HKEYhKey, <br />  LPCWSTRlpValueName, <br />  DWORDReserved, <br />  DWORDdwType, <br />  constBYTE* lpData, <br />  DWORDcbData<br />)<br />一开始,直接转换,代码如下<br /><br />spath=L"e:/L's Docume

liyz_2009的专栏 5103

VC中的一些字符类型及其转换

一、VC字符串类型互相转换       总是觉得VC中的类型纷繁复杂,扑朔迷离。因为有了Unicode,因为C、C++类型相互化如此不同。保存char的不止char一种,还可以用short,unsigned short,int 等来保存。单单就字符串就有N多种类型,其它类型也不止一个。再加上C++中本来就没有正式的string类型,所以,平常就会碰到很多种相同意思,但不同类型,或相同类型

whatday的专栏 1653

VC类型的相互

<br />一、VC字符串类型互相转换<br />      总是觉得VC中的类型纷繁复杂,扑朔迷离。因为有了Unicode,因为C、C++类型相互化如此不同。保存char的不止char一种,还可以用 short,unsigned short,int 等来保存。单单就字符串就有N多种类型,其它类型也不止一个。再加上C++中本来就没有正式的string类型,所以,平常就会碰到很多种相同意思,但不同类型,或相同类型,不同写法的Type.<br />      如何在他们之间相互化,也是在学习VC中避免不

tigerMayDo的专栏 785

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

<br />////////////////////////////////// <br />CString -> char* <br />////////////////////////////////// <br />#include "atlbase.h" <br />CString strTmp; <br />char* cpTmp; <br />USES_CONVERSION <br />cpTmp=T2A(strTmp); <br />//////////////////////////////

Gaoboyu的专栏 575

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

godyxfcode的专栏 1791

字符串与十六进制互相转换 vc

//字符串CString 转换成CString类型的十六进制串********************************************************************************** CString ConvertCStringoHex(CString Data){//CString转换char[] wchar_t* a=Data.GetBuf

wangweicmon236的专栏 1万+

VC常见数据类型转换详解

作者:程佩君 刚接触VC编程的朋友往往对许多数据类型转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="女侠程佩君"; char temp[200]; char *buf;

1031

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

VC常用数据类型使用转换详解读者层次:初学刚接触VC编程的朋友往往对许多数据类型转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CStr

小发猫 3803

VC中常用数据类型转换

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;

JiangRB的专栏 735

VC中有关数据类型转换的整理

原文地址:http://spaces.msn.com/wsycqyz/blog/cns!F27CB74CE9ADA6E7!152.trak 对VC中有关数据类型转换的整理

James Deng的专栏 1824

VC中CStringChar互相转换

在实际编程中,常常会碰到一些数据类型转换,特别是CStringChar互相转换,一开始,我完全摸不着头脑,从网上看了别人的很多方法,现在我把我常用到的方法做一下总结。 1、char转换成CString        如:定义一个字符串数组 char strSrc[] = “This is a string.”;        定义一个字符串指针 char* strP

keleigexiansheng的专栏 1261

VC中各种类型的数据转换

一、VC字符串类型互相转换<br />      总是觉得VC中的类型纷繁复杂,扑朔迷离。因为有了Unicode,因为C、C++类型相互化如此不同。保存char的不止char一种,还可以用short,unsigned short,int 等来保存。单单就字符串就有N多种类型,其它类型也不止一个。再加上C++中本来就没有正式的string类型,所以,平常就会碰到很多种相同意思,但不同类型,或相同类型,不同写法的Type.<br />      如何在他们之间相互化,也是在学习VC中避免不了的一个问题。

tanll826's blog 405
上一篇: VC6 STL使用时候很多warning, stl使用以及消除warning的方法如下
下一篇: Sentinel SuperPro加密锁编程开发指南
cosair
博客等级 码龄20年 3粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值