VC中型別的相互轉化

2021-05-09 02:30:24 字數 4561 閱讀 5623

總是覺得

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

類有一成員函式

format

,可以用來把型別轉換成

cstring

型別,以上

lpstr

轉換成cstring

可以這樣表示:

str2.format(「

%s」,lpstr);

cstring strhello;

strhello

=」hello world」;

lpcstr lpstr

=(lpcstr)strhello;

cstring str2;

str2

=(cstring)lpstr; 2.

lpctstr

ß

à

cstring

lpctstr

和lpcstr

轉換方式是一樣的,所不同的是兩個型別本身不一樣。

lpctstr

表示的是

unsigned short*

,這樣,它可以支援

unicode

字元型別,而

lpcstr

只支援ansi

字元型別。平常,我們一般可以用

lpctstr

來代替lpcstr。

3.tchar*(char*)

ß

à

cstring

tchar在vc

中表示的是

unsigned short

,可以支援

unicode

字符集。兩型別之間的轉換可以像以下這樣

cstring

轉tchar*

不能用以下**轉換:

但是可以這樣:

tchar

*mychars 

=strhello.getbuffer(strhello.getlength());

str2

=(cstring)mychars; 

//或者str2.format(「%s」,mychars);

注意:mychars 

=(lpctstr)strhello; 

//error,can not convert from 『const char*』 to 『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

其中,很多函式都用到

和,如果用到,要把頭檔案包含進原始檔.

1.字串轉換成其它型別

舉例:

char*s

=」-2309.12e-15

」;doublex=

atof(s);   

//out:-2309120e-012s=

」-9885

pigs」;

inti

=atoi(s);              

//out:-9885 2.

其它型別轉換成字元型:

char

*itoa(

intvalue,

char

*string

,int

radix);

char

*i64toa(int64 value,

char

*string

,int

radix);

char

*ui64toa(unsigned int64 value,

char

*string

,int

radix);

wchar_t 

*itow(

intvalue, wchar_t 

string

, int

radix);

char

*_ltoa(

long

value,

char

*string

,int

radix);

舉例:

inti

=100

;itoa(i,temp,

10); 

//十進位制

itoa(i,temp,

2); 

//二進位制

cstring str;

str.fomat(「

%d」,i); 

//整型to cstring

str.format(「

%f」,f); 

//float to cstring

型別相互轉化

1.short int exp short shortvar 0 int intvar 0 shortvar short intvar 2.int short exp short shortvar 0 int intvar 0 intvar shortvar 3.int string exp int...

js 型別之間的相互轉化

設定元素物件屬性 var img document.queryselector img img.setattribute src 值型別number string undefined boolen 引入型別 function a function object a a.age null a null...

C 中 string 和其它型別的相互轉化。

sscanf sprintf 也可以用,但是不建議使用,實際上 c 實現 string 和其他資料型別的轉換很容易完成,見如下 include using std cout using std endl include using std string include using std strin...