日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

string的常见用法详解

發布時間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 string的常见用法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • string的定義
  • string中內容的訪問
  • string常用函數實例解析

在C語言中,一般使用字符數組char str[]來存放字符串,但是使用字符數組有時會顯得操作麻煩,而且容易因經驗不足而產生一些錯誤。為了使編程者可以更方便地對字符串進行操作, C++在STL中加入了string類型,對字符串常用的需求功能進行了封裝,使得操作起來更方便,且不易出錯。

需要的頭文件:

#include <string> //(注意string.h和string是不一樣的頭文件)

需要的其他東西:

using namespace std;

string的定義

定義string的方式跟基本數據類型相同,只需要在string后面跟上變量名即可:

string str;

如果需要初始化,可以直接給string類型的變量進行賦值:

string str="abcd";

string中內容的訪問

(1)通過下標訪問
一般來說,可以直接像字符數組那樣去訪問string:

如果要讀入和讀出整個字符串,則只能用cin和cout:


由上圖你可以看到,string的輸入的終止讀取符也是空格,這和 scanf()對字符數組的讀取效果是一樣的。

上面的代碼對任意的字符串輸入,都會輸出同樣的字符串。
那么,真的沒有辦法用printf來輸出string么? 其實是有的,即用 c_str()將string類型轉換為字符數組進行輸出,
例如:

(2)通過迭代器訪問
一般僅通過(1)即可滿足訪問的要求,但是有些函數比如insert()與erase()則要求以迭代器為參數,
因此還是需要學習一下string迭代器的用法。

由于string不像其他的容器那樣需要參數,因此可以直接如下定義:

string::iterator it;

這樣就得到了迭代器 it ,并可以通過 *it來訪問string里的每一位:

最后指出,string 和 vector一樣,支持直接對迭代器進行加減某個數字,如str.begin()+3的寫法是可行的。

string常用函數實例解析

(1) operator+=
這是string的加法,可以將兩個string直接拼接起來。

(2) compare operator
兩個string類型可以直接使用==、!=、<、<=、>、>=比較大小,比較規則是字典序。
例子:

(3) length() / size()
length()返回string的長度,即存放的字符數,時間復雜度為O(1)。size()與length()基本相同。

(4) insert()
string的insert()函數有很多寫法,這里給出幾個常用的寫法,時間復雜度為O(N)。
①insert(pos,string) , 在pos號位置插入字符串string。

②insert( it , it2 , it3 ), it為原字符串的欲插入位置,it2和 it3 為待插字符串的首部迭代器,用來表示串 [ it2, it3)
將被插在it的位置上。

(5)erase()
erase()有兩種方法: 刪除單個元素、刪除一個區間內的所有元素。時間復雜度為O(N)
①刪除單個元素
str.erase(it) ,用于刪除單個元素,it為需要刪除元素的迭代器。

②刪除一個區間內的所有元素
刪除一個區間內的所有元素有兩種方法:
str.erase(first,last),其中first為所需刪除區間的起始迭代器,而last則為所需要刪除區間的末尾迭代器的下一個地址,
即刪除 [ first , last) 內的所有元素。


str.erase(pos , length) , 其中pos為需要開始刪除的起始位置,length為刪除的字符個數。

(6)clear()
clear()用以清空string中的數據,時間復雜度一般為O(1)。

(7)substr()
substr(pos,len)返回從pos號位開始,長度為len的子串,時間復雜度為O(len)

(8)string:npos
string:npos是一個常數,其本身的值為-1,但由于是unsigned int類型,因此實際上也可以認為是unsigned int類型的最大值。
string:npos用以作為find函數失配時的返回值。例如在下面的實例中可以認為string::npos等于-1或者4294967295.

(9)find()
str.find(str2),當str2是str的字串時,返回其中在str中第一次出現的位置:
如果str2不是str的子串,那么返回string::npos。
str.find(str2,pos),從str的pos號位開始匹配str2,返回值與上相同。
時間復雜度為O(nm),其中n和m分別為str和str2的長度。

(10)replace()
str.replace(pos,len,str2)
把str從pos號位開始、長度為len的子串替換為str2。
str.replace(it1,it2,str2)把str的迭代器[it1,it2)范圍內的子串替換為str2。

總結

以上是生活随笔為你收集整理的string的常见用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。