1. 程式人生 > >[c++]string怎樣判斷字串裡面是否含有某個字串?

[c++]string怎樣判斷字串裡面是否含有某個字串?

摘自百度知道:https://zhidao.baidu.com/question/438950092.html

一、C++風格。

C++的string類提供了字串中查詢另一個字串的函式find。

其過載形式為:

string::size_type string::find(string &);

功能為在string物件中,查詢引數string型別的字串是否存在,如果存在,返回起始位置。不存在則返回 string::npos。

參考程式碼如下:

12345678910111213141516171819202122#include <iostream>#include <string>using
 namespace std;int main(){string a="abcdefghigklmn";string b="def";string c="123";string::size_type idx;idx=a.find(b);//在a中查詢b.if(idx == string::npos )//不存在。cout << "not found\n";else//存在。cout <<"found\n"idx=a.find(c);//在a中查詢c。if(idx == string::npos )//不存在。cout << "not found\n";else//存在。cout <<
"found\n"return 0;}

二、C語言風格。

在C語言中,字串儲存為字元陣列,以'\0'結束。 在C的介面中,有strstr函式,可以在字串中查詢另一個字串。

char * strstr(const char *str1, const char *str2);

功能為在str1中查詢str2,如果存在,那麼返回查詢到的起始指標,否則返回NULL。

參考程式碼:

1234567891011121314151617181920#include <iostream>#include <string>#include <cstring>using namespace std;
int main(){string a="abcdefghigklmn";char *b="def";char *c="123";if(strstr(a.c_str(), b) == NULL)//在a中查詢b,如果不存在,cout << "not found\n";//輸出結果。else//否則存在。cout <<"found\n"//輸出結果。if(strstr(a.c_str(), c) == NULL)//在a中查詢b,如果不存在,cout << "not found\n";//輸出結果。else//否則存在。cout <<"found\n"//輸出結果。return 0;}

三、注意事項。

兩種方法在實際程式設計中都可以使用,效率幾乎相同。不過相對來說使用C++的string效率更高一些,程式碼也更簡便。