1. 程式人生 > >C++(9):find和substr函式的用法

C++(9):find和substr函式的用法

在C++中,對string的操作中,如果需要在字串中尋找指定的某個值,如在“dkgjoaidjfajlkbestadsjgoaijdl”這樣一個字串中找一個小字串“hello”,則可以用到string類提供的find()函式,這個函式在庫中進行了多次過載,有幾種不同的用法。

1.find (const string& str, size_t pos = 0) ;  

根據引數構成可以看出來,這個函式接受一個string物件,pos表示下標,這裡採用預設引數的方式,因此可以傳也可以不傳。

string s = "you are the best one";
string s2 = "are";
size_t pos = s.find(s2);            //此處pos得到的值為4,對應“are”的起始‘a’的下標4

呼叫時不給第二個引數預設從下標0開始查詢,找到結果則會返回目標位置的初始下標。

2.find (const char* s, size_t pos = 0);

和上一種形式類似,只是第一個引數接受的是const char *型別,即在呼叫的時候直接顯示的用字串形式傳參。

string s = "you are the best one";
size_t pos = s.find("are");            //效果同上個列子,pos=4

3.find (const char* s, size_t pos, size_t n) 

這種形式需要注意,第二個引數下標這裡不是預設引數,呼叫時需要傳參,第三個引數表示的是第一個引數對應的字串中從頭算起需要匹配的字元個數,具體用法如下:

string s = "you are the best one";
int n = 3,seat = 0;
size_t pos = s.find("are you",seat,n);    //在s中第seat位開始搜尋“are you”中前n位

除了find函式之外,如果要在一個string中找尋指定位置的的字串,或者擷取,可以用substr函式實現,程式碼如下:

string s("abcde");
string a=s.substr(0,3);       //獲得字串s中 從下標0開始的長度為3的字串//預設時的長度為從開始位置到尾
cout<<a<<endl;

輸出為

abc

如果下面這種情況:

string a = "abcde";
string b = a.substr(3,5);        //下標3開始擷取,剩餘字元不足5個長度
cout << b << endl;

輸出:

de