STL string

string

C中一般使用字符數(shù)組char str[]來存放字符串,使用字符數(shù)組會顯得操作麻煩經(jīng)驗不足等錯誤
C++中STL中引入了string類型, 對字符串常用的需求功能進(jìn)行了封裝, 使得操作起來更方便且不易出錯

定義

string str;

初始化

string str = "abcd";

string中內(nèi)容的訪問

  1. 通過下標(biāo)訪問 直接像字符數(shù)組那樣去訪問string
for(int i = 0; i < str.length(); i++) printf("%d", str[i]); //輸出abcd 

如果要讀入和輸出整個字符串,則只能用cin和cout
如想用printf輸出string 可通過c_str()將string類型轉(zhuǎn)換為字符數(shù)組進(jìn)行輸出

printf("%s",str.c_str());
  1. 通過迭代器訪問
    string不像其它STL容器那樣需要參數(shù),因此可直接如下定義
string::iterator it;
for(string::iterator it = str.begin(); it != str.end(); it++) printf("%c", *it);

string和vector一樣,支持直接對迭代器進(jìn)行加減某個數(shù)字,如str.begin() + 3 的寫法是可行的

string 常用函數(shù)

  1. operator+=
    這是string的加法, 可以將兩個string直接拼接起來
str3 = str1 + str2; //將str1 和str2 拼接, 賦值給str3
str1 += str2; //將str2 直接拼接到str1上
  1. compare operator
    兩個string類型可以直接使用 == != < <= > >= 比較大小,比較規(guī)則是字典序
  2. length()/size() length()返回string的長度, 即存放的字符數(shù),size()與length()基本相同
  3. insert()
    4.1 insert(pos, string), 在pos號位置插入字符串string
string str1 = "abcxyz", str2 = "opq"; str.insert(3, str2);  //abcopqxyz

4.2 insert(it, it2, it3) it為源字符串的欲插入位置,it2和it3為待插入字符串的首位迭代器 [it2, it3)

str.insert(str1.begin() + 3, str2.begin(), str2.end); //abcopqxyz
  1. erase()
    5.1刪除單個元素 str.erase(it) it為需要刪除元素的迭代器
    5.2刪除一個區(qū)間內(nèi)的所有元素
    5.2.1 str.erase(first, last) 起始first和末尾last迭代器
    5.2.2 str.erase(pos, length) pos為需要開始刪除的起始位置, length為刪除的字符個數(shù)
  2. clear() 用以清空string中的數(shù)據(jù)
  3. substr(pos, len) 返回從pos號位置開始、長度為len的子串
  4. string::npos 是一個常數(shù),其本身的值為-1,但由于是unsigned_int類型,因此實際上也可以認(rèn)為是unsigned_int類型的最大值
    用以作為find函數(shù)失配時的返回值 -1 或4294967295
  5. find
    str1.find(str2),當(dāng)str2是str1的子串時,返回其在str中第一次出現(xiàn)的位置;如果不是其子串,那么返回string::npos
    str1.find(str2, pos) 從str1的pos號位置開始匹配str2, 返回值同上
  6. replace
    str.replace(pos, len, str2),把str從pos號位置開始、長度為len的子串替換為str2
    str.replace(it1, it2, str2),把str的迭代器[it1, it2)范圍的子串替換為str2

這里給出看到的一個不錯的string舉例
https://blog.csdn.net/qq_37941471/article/details/82107077

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容