變數初始化新方式與string型別

2021-10-09 09:31:34 字數 2784 閱讀 6896

一:變數初始化新方式

(1)

int a =10;

//傳統的變數初始化方式

(2)c++新標準支援的初始化方式

int b

;int c =

;intd(

3);int e =(5

);

那麼使用()和{}對變數進行初始化是否有好處?

答案是肯定的。

在傳統的變數初始化方式中,

int a =

10.6f

;//可以把乙個浮點型資料賦給乙個整型變數,編譯器只會提示,丟失精度

然而,這樣賦值,編譯器直接會報錯。

int a

;int b=

;intg(

3.1f);

int h =

(5.5f

);

這種新的賦值方式,進一步保證了書寫的**的健壯性。

二:string型別

(1)string:用來處理可變長字串用的,string型別位於using namespace std命名空間中,

使用時需要包含#include 標頭檔案,string型別可以理解成乙個類型別。

(2)string型別的初始化方式

string s1 ;

//空串,內容為"";

string s2 =

"i love china"

;string s3

("i love china");

string s4 = s3;

string s5 =

;string s6

;string s7 (5,

'a')

;//"aaaaa"

string s8

;//"aaa"

(2)string常用的操作

(a)判斷是否為空,empty(),返回布林值。

string s1 ;

if(s1.

empty()

)//成立

(b)size()/length(),返回位元組數/字元數量。返回乙個無符號數。

string s1 ;

cout << s1.

size()

<< endl;

//0cout << s1.

length()

<< endl;

//0string s2 =

"abc"

;cout << s2.

size()

<< endl;

//3cout << s2.

length()

<< endl;

//3string s3 =

"我愛你"

;cout << s3.

size()

<< endl;

//6,乙個漢字兩個字元

cout << s3.

length()

<< endl;

//6

string s1=

"dklajdal"

;cout << s1[3]

<< endl;

//a,n從0開始

(d)字串拼接

string s1=

"dklajdal"

;string s2 =

"abc"

;string s3 = s1 + s2;

cout << s3 << endl;

//"dklajdalabc"

(e)判斷字串是否相等

string s1=

"dklajdal"

; string s2 =

"abc";if

(s1 != s2)

string s3 =

"abc"

; string s4 =

"abc";if

(s3 == s4)

//大小寫敏感,長度相等,大小寫一樣

(f)s.c_str(),返回乙個字串s中的內容指標(常量指標),出現這個的原因只要是為了與c語言當中的字元指標相相容。

string s1=

"dklajdal"

const

char

*p = s1.

c_str()

;//p指向了s1當中的字串了

(g)讀入內容

string s1;

cin >> s1;

cout << s1 << endl;

(h)和字面值相加,這裡涉及到了類的隱式型別轉換。

string s1=

"ab"

;string s2 =

"bc"

;string s3 =

"aa"

+"bb"

;//錯誤

string s4 =

"aa"

+"bb"

+ s2;

//錯誤

string s5 = s1 +

"bb"

;string s6 =

"aa"

+ s1 +

"bb"

;//"aa"和s1相加生成了臨時的string物件

變數初始化的方式

當物件在建立時獲得了乙個特定的值,我們說這個物件被初始化了。用於初始化變數的值可以是任意複雜的表示式。當一次定義了兩個或多個變數時,物件的名字在定義後就馬上可以使用了。例如我們可以這樣使用 使用剛剛定義的price初始化discount double price 109.99,discount pr...

string 物件初始化

我在標頭檔案裡這樣宣告 wf error writelog log level mlevel,module code mmodule,string msg,string filename null,int line num 0 在windows下編譯 執行沒問題,但是linux下編譯可以通過,執行時...

變數初始化

int a 是變數定義,也就是說編譯器將為a分配儲存,這在編譯時被處理。int a 0 是定義 初始化,定義的分配儲存的action在編譯時完成,初始化的action則在執行時完成 將執行類似dword ptr ebp 4 0的指令,而單獨的int a 不會有對應的執行指令 定義是分配空間,而初始化...