string對象的幾種構造方法

來源:互聯網
上載者:User

標籤:style   blog   ar   color   使用   sp   div   log   bs   

在某種程度上,可以將string類型視為字元容器,支援很多容器操作。與vector相似,string的字元也是連續儲存的,因此也有capacity和reserve操作。另外,也可用迭代器輸出字串,如下例:

string s("Hello world!");string :: iterator iter = s.begin();while(iter!=s.end()){    cout << *iter;}

在建立一個string對象並初始化時,有以下幾種方法(ch1、ch2、ch3為定義的字元數組):

char *ch1 = "hello world!";char ch2[] = "goodbye";char ch3[] = {‘a‘,‘b‘,‘c‘};string s1;  string s2(2,‘a‘);string s3(s2);string s4(s3.begin(),s3.end());string s5(ch1);string s6(ch2,7);string s7(ch2+4,2);string s8(ch3);string s9(ch3,2);string s10(s6,2);string s11(s6,0,4);string s12(s6,0,10);

 

    上述代碼中s1-s9的建立中,s8的建立string對象是錯誤的!!!!下面分析每個對象:

  1. s1:沒有採用其它對象進行初始化,而是調用了預設建構函式,因此,s1為空白字元對象,即s1="";
  2. s2:採用2個字元a初始化s2,因此s2="aa";
  3. s3:s3是s2的一個副本,因此s3="aa";
  4. s4:採用兩個迭代器之間的元素進行初始化s4,s3.begin()存放s3的第一個元素,s3.end()指向s3最後一個元素的下一個,但初始化為左閉合,因此不包括s3.end(),因此。s4="aa";
  5. s5:使用只有一個指標參數的建構函式定義s5,該指標指向以Null 字元結束的數組ch1的第一個自讀,這個數組的所有字元,但不包括null(C風格字串是以null結尾的),都被複製到新建立的s5中,s5="hello world!";
  6. s6:s6的初始化是通過一個指標和一個計數器來實現的,從這個指標指向的字元開始,複製該指標後面連續計數器個數的字元到新建立的string對象中,s6="goo";
  7. s7:s7的初始化與s6類似,但傳進的指標是ch2數組中指向b的指標,s7="by";
  8. s8:s8並不是採用C風格字串,調用這種形式的初始化式,必須是以Null 字元結束的數組。將不包含null的數組傳遞給此建構函式,將導致編譯器無法檢測的嚴重錯誤,只有當遇到null時,s8的初始化才會停止;
  9. s9:然而,s9的初始化是正確的,初始化包含了一個計數器,指明了需要複製的元素的個數,該元素個數必須小於數組長度,無論數組是否以null結尾都沒有什麼關係。s9="ab";
  10. s10:將s10初始化為s6的一個子串,第二個參數指定了開始複製的位置,從制定位置複製到最後,因此s10="odbye";
  11. s11:s11與s10是同種初始化方式,其中,第二個參數制定了開始複製字元的位置,第三個參數制定了複製的長度,因此s11="good";
  12. s12:當複製的長度超過字串的結尾時,標準庫規定只能複製到與被複製string對象結尾處,s12="goodbye"。

 

string對象的幾種構造方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.