資料型別轉換

2022-06-23 12:45:13 字數 2240 閱讀 8099

c++提供了四種強制型別轉換:

強制轉換型別

功能備註

static_cast

非多型型別的轉換,不能用於兩個不相關型別的轉換,比如不能用於整型和整型指標之間轉換

1.基本型別之間的轉換

2.空型別指標到其他型別指標的轉換

3.子類和父類之間的換磚

4.任何型別轉換乘void型別

reinterpret_cast

把一種型別轉換成另一種不相關的型別,比如整型與整型指標的轉換

const_cast

刪除變數的const屬性,方便再次賦值

被定義為const的變數,編譯器會對其優化,在暫存器中訪問,預設不能改變

dynamic_cast

父類物件的指標轉換成子類物件的指標或引用

1.只能用於含有虛函式的類

2.會在轉換時先檢查能否轉換成功,不能轉換會返回0,保證**安全

具體使用如下:

void

test_static_cast()

voidtest_reinterpret_cast()

voidtest_const_cast()

//子類轉換成父類,直接=即可,稱為向上轉型

//父類轉換成子類,需要使用dynamic_cast進行安全轉換,稱為向下轉型

class b:publica

intb;

};void fun(a*p)

else

}voidtest_dynamic_cast()

常用到的字串有cstring,std::string,char* ,const char*,tchar等,它們之間的轉換如下:

使用cstring::format()實現,其它型別,int/double/float等都是用此函式轉換成cstring。

//

第一種方式:

cstring str;

uses_conversion;

std::

string s(w2a(str));//

僅unicode字符集下使用

//第二種方式:

cstring str ;

std::

string s = (ct2a)str;

//

第一種方式

cstring str;

const

char*chstr;

char

temp[max_path];

::wsprintfa(temp,

"%ls

",(lpctstr)str);//

unicode字符集下不可用

chstr =temp;

//第二種方式

cstring str;

uses_conversion;

std::

string s(w2a(str));//

僅unicode字符集下使用

const

char* cstr =s.c_str();

//第三種方式

cstring str;

char* ch = ct2a(str);

string

str;

char* ch =str.data();

//或者

char* ch = str.c_str();

char*ch;

string str = ch;

_tcscpy();

數字型別   --->   字串char*  :  itoa gcvt等等函式

數字型別   --->   字串string  :使用std::to_string()

字串char*   --->   數字型別  :atoi  atol  atof  strtod  strtol  strtoul  wcstol  wcstoul等等函式

字串string  -- ->   數字型別 : 使用c標準庫函式:atoi strtoul等;或者使用c++標準庫函式(c++11)  stoi  stol  stoul  stoll  stof  stod等

資料型別 型別轉換

這樣的語句將報錯,因為char型別精度低於int型別,編譯器無法將其自動轉換,只能進行強制轉換 int x 65 char ch char x 舉例1 int age 19 char 女 char result age int 不可以自動轉換成char 精度損失 舉例2 int a 10 int b...

Objective C資料型別 資料型別轉換

資料型別 1.objective c資料型別可以分為 基本資料型別 物件資料型別和id型別。2.基本資料型別有 int float double和char型別。3.物件型別就是類或協議所宣告的指標型別,例如 nsautoreleasepool pool 其中,nsautoreleasepool是乙個...

資料型別轉換

資料型別轉換 public class typeconvert 一 容量小的資料型別自動轉換為容量大的資料型別 資料型別按容量大小排序為 byte,short,char int long float double byte,short,char之間不會互相轉換,他們三者在計算時首先回轉換為int型別...