c++ 字元型別轉換
strHello=”Hello world”;
LPCSTR lpStr=(LPCSTR)strHello;
Cstring str2;
str2=(CString)lpStr;
另外,Cstring類有一成員函式Format,可以用來把型別轉換成Cstring型別,以上lpStr轉換成Cstring可以這樣表示:
2. LPCTSTRßàCstring
LPCTSTR和LPCSTR轉換方式是一樣的,所不同的是兩個型別本身不一樣。LPCTSTR表示的是unsigned short*,這樣,它可以支援Unicode
3. TCHAR*(char*)ßàCstring
TCHAR在VC中表示的是unsigned short,可以支援Unicode字符集。兩型別之間的轉換可以像以下這樣
str2=(CString)myChars; //或者str2.Format(“%s”,myChars);
注意:Cstring轉TCHAR*不能用以下程式碼轉換:
也不能這樣轉化:
myChars=(LPTSTR)strHello; //Cstring不能轉化為char*但是可以這樣:
myChars=(LPTSTR)(LPCTSTR)strHello; //先把strHello轉化為const char*,再轉化為char*4. LPBYTEßàCstring
LPBYTE是unsigned char*型別,它們之間的轉換如下:
//GetBuffer返回的是LPTSTR型別
//也可以這樣轉換:
5. TCHAR[]ßàCstring
它們之間的轉換又不一樣,因為涉及到陣列。所以用strcpy函式來進行,strCpy的函式原型如下:
LPTSTR StrCpy(LPTSTR psz1,LPCTSTR )
它們之間的轉換如下:
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 wtof(const wchar_t*string);
int atoi(constchar*string);
_int64 _atoi64(constchar*string)
int wtoi(const wchar_t*string);
int64 wtoi64(const wchar_t*string);
long atol(constchar*string);
long wtol(const wchar_t*string);
舉例:
double x=atof(s); //out:-2309120E-012
s=”-9885 pigs”;
int I=atoi(s); //out:-9885
2.其它型別轉換成字元型:
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