c++ string的詳細用法(1)assign()

//字符串變量
string a="123";
string b="456";

1.字符串直接賦值
a.assign(b); //等於a=b賦值,結果爲 a="456"
a.assign("789");//結果爲 a="789"

2.一個字符串的子串賦值給另一個字符串
a.assign(b,begin,len);
//從字符串b的第(begin)個字符開始向後數(len)個字符(包括begin)的字符串賦值給字符串a

例:
a.assign(b,0,1); //結果爲 a="4"
a.assign(b,1,1); //結果爲 a="5"
a.assign(b,0,2); //結果爲 a="45";
a.assign(b,1,2); //結果爲 a="56";
a.assign("123456",1,3); //結果爲 a="234";
/*說明
 *如果第三個參數大於字符串本身的長度,則賦值到該字符串末尾
 *如:a.assign(b,1,4); 結果爲 a="56";
 *如果第二個參數大於字符串本身長度則賦值爲空
 *如:a.assign(b,3,4); 結果爲 a="";
 *第二個參數最大不能超過字符串長度加一,否則程序會運行錯誤。因爲string字符串後面會有一個"\n"符號,這個符號雖然不算在字符串長度裏面,但是會佔一個字符的空間。所以超過字符串長度加一後會出現std::out_of_range的錯誤。
 */
 
3.從字符串的某一個字符串開始到結束賦值給另一個字符串
a.assign(b,begin);
//從字符串b的第begin字符串開始到字符串結束賦值給字符串a

a.assign(b,0); //結果爲 a="456";
a.assign(b,1); //結果爲 a="56";
a.assign(b,4); //error 這樣會運行錯誤(同2) vs2019

4.從字符串開始到字符串的某一個字符賦值給另一個字符串
a.assign("123456",2);//結果爲 a="12"
string c="123456";
a.assign(c,2);       //結果爲 a="3456"
//根據vs2019運行情況來看,如過第一個參數是字符串常量則按從頭到第n個字符賦值,如果第一個參數是字符串變量的話,則從第n個字符開始到字符串結尾賦值(不知道其他編譯會是怎麼樣的,vs2019是調用不同的重載函數)

5.用相同的n個字符給字符串賦值
a.assign(10,'b'); //結果爲 a="bbbbbbbbbb";
a.assign(5,'c');  //結果爲 a="ccccc";

6.template<class inputIterator> string& assign(inputIterator first,inputIterator last);
//使用這個函數需要引入#include<iterator>頭文件 
a.assign(istream_iterator<char>(cin), istream_iterator<char>());
//鍵盤輸入123abcd
//結果爲 a="123abcd";
/*注意
 *該函數不接收空格換行等符號,最後(windows系統)按ctrl+z結束輸入
 *如輸入以下符號(既有空格也有換行)
 123abc    ABC  哈哈 !@#$



 defg)(-=<>-+/*


 123654
 最後結果爲 a="123abcABC哈哈!@#$defg)(-=<>-+/*123654";
 */

7.使用迭代器賦值
a.assign(b.begin()+1,b.end()); //結果爲 a="67";
a.assign(a.begin(),a.end());   //結果爲 a="123";
發佈了20 篇原創文章 · 獲贊 118 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章