【C++】 string學習筆記1——定義和初始化string物件
阿新 • • 發佈:2019-01-05
string學習筆記1
c++初始化string物件的方式有以下幾種常見的方式。
/**定義和初始化string**/
string s1; ///預設的初始化,s1為一個空字串。
string s2 = s1; ///s2是s1的副本。
string s3 = "abcd"; ///s3是該字串字面值的副本。
string s4("abcd"); ///等價於s3="abcd",除了字元值最後的那個空字元“\0”。
int n = 10;
string s5(n,'c'); ///s5的內容是cccccccccc,即n個字元c組成的串。
tips—–直接初始化與拷貝初始化的區別
一般來說使用等號初始化一個變數就是拷貝初始化。
同理,不使用等號就是直接初始化。
string s6 = "abcd"; ///拷貝初始化,拷貝的字串為"abcd'\0'"。
string s7("abcd"); ///直接初始化,s7的值為"abcd"。
string s8(10,'c'); ///直接初始化,內容為cccccccccc。
如同上面例子的s6就是拷貝初始化,s7和s8就是直接初始化。
當然以下寫法也可以做到拷貝初始化,也許有時候總會有人不想要直接初始化在字串後面的’\0’這個空字元或者就是想強行拷貝初始化。
/**合法但是不太推薦的初始化寫法*/
string s9 = string(10,'c'); ///拷貝初始化
///等價於
string temp(10,'c');
string s10 = temp;
不過顯而易見,這樣子的寫法在大多數情況下既不好看也沒啥用。