[c++]string怎樣判斷字串裡面是否含有某個字串?
阿新 • • 發佈:2018-12-30
摘自百度知道: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效率更高一些,程式碼也更簡便。