c find函式用法實驗

2022-04-07 08:22:30 字數 1636 閱讀 8245

(1)size_t find (const string& str, size_tpos = 0) const;  //查詢物件--string類物件

(2)size_t find (const char* s, size_t pos =0) const; //查詢物件--字串

(3)size_t find (const char* s, size_t pos,size_t n) const;  //查詢物件--字串的前n個字元

(4)size_t find (char c, size_t pos = 0)const;  //查詢物件--字元

如果沒有找到要查詢的物件,find函式會返回string::npos.

可以用if(find(s)== string::npos) break;結束迴圈

#include

#include

using namespace std;

int main()

string str;

getline(cin,str);

intpos[10];

pos[0]= str.find("abc");//從str中找到abc第一次出現的下標並返回

pos[1]= str.find("abc",10);//從str第十個元素後開始,找到abc第一次出現的下標

pos[2]= str.find("abc",10,2);//從str第十個元素後開始,找到ab第一次出現的位置

pos[3]= str.find_first_of("abc");//從str中找到abc中任意乙個字元第一次出現的下標

pos[4]= str.find_last_of("abc");//從str中找到abc中任意乙個最後出現的下標

pos[5]= str.find_first_not_of("abc");//從str中找到第乙個不包含在abc中的元素的下標

pos[6]= str.find_last_not_of("abc");//從str中找到最後乙個不包含在abc中的元素的下標

pos[7]= str.rfind("abc");//從str從後向前找第一次出現的abc的a的下標

for(inti = 0;i < 8;i++)

cout<< pos[i] << " ";

return0;

需要注意的是,npos是string類的靜態成員,它的值是string物件能儲存的最大字元數,由於索引一般都是從0開始,所以它應該比最大索引大1,因此可以用它來表示沒有查詢到字元或者字串。

另外有時會有這種需要:我需要查詢乙個字元或者字串第二次、第三次、第n次出現的位置,這時候我們可以用while迴圈,當所求的下標不滿足需要時候,就用find(s,pos+1),

其中pos是上一次s出現的位置,s是目標字元。每次迴圈令pos = str.find(s,pos+1).

**如下:

#include

#include

using namespace std;

int main()

return 0;

最後要提到的是,find()函式返回的值並不是嚴格的int型,有些時候上述寫法會出錯,保險的用法是把上述while內條件改為(str.find('a',pos+1) != string::npos).

C find函式相關用法

c 中stl裡提供了許多字串操作的函式,下面是字串查詢方面的部分函式用法簡介 1.find 查詢第一次出現的目標字串 include includeusing namespace std int main 其中find first of 也可以約定初始查詢的位置 s1.find first of s...

c find函式使用

find函式的幾個簡單使用 include include using namespace std int main 1,返回乙個字串或字元位置 尋找字串 int position 0 int start 0 position a.find b,start 意思是在a中尋找b字串,尋找的開始位子是s...

C find函式的兩種不同型別

find 主要有兩種find。第一種為c 標頭檔案中的函式,這種函式find格式如下 find start,end,val 如果查詢到了,會返回元素的引用或者指標,而不是返回下標,因為為了兼顧不同的資料結構,可能有的不是按照位址順序儲存的。容器寫法 find a.begin a.end val 如果...