總是覺得
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...