C/C++,string怎樣判斷字符串里面是否含有某個字符串?


一、C語言風格。

在C語言中,字符串存儲為字符數組,以'\0'結束。 在C的接口中,有strstr函數,可以在字符串中查找另一個字符串。

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

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

參考代碼:

#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++風格。

C++的string類提供了字符串中查找另一個字符串的函數find。

其重載形式為:

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

功能為在string對象中,查找參數string類型的字符串是否存在,如果存在,返回起始位置。不存在則返回 string::npos。

參考代碼如下:

#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++的string效率更高一些,代碼也更簡便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM