strstr(T,S) 函數:ios
這是一個字符串處理函數,用於判斷字符串S是不是字符串T的子串。若是是,則該函數返回S在T中首次出現的地址;不然,返回NULL。數組
頭文件:#include <string.h>函數
函數原型:char *strstr(const char *str1, const char *str2);spa
返回值:(1) 成功找到,返回在父串中第一次出現的位置的 char *指針 (2) 若未找到,即不存在這樣的子串,返回 NULL。指針
#include<iostream> #include<cstring>//頭文件 using namespace std; int main() { char T[20],S[20]; cin>>T; while(1){ cin>>S; if(strstr(T,S)) cout<<"YES"<<' ',//S爲父串T的子串 cout<<strstr(T,S)-T<<' ',//返回子串S在父串T中首次出現的下標位置 cout<<strstr(T,S)<<endl;//返回父串S中從子串T開始出現的字符串 else cout<<"NO"<<endl;//S不爲父串T的子串 } return 0; }
運行結果以下:code
若是用string類的字符串,須要先用c_str()函數把sring轉化爲char*。對象
#include<iostream> #include<cstring> using namespace std; int main() { string T,S; cin>>T; while(1) { cin>>S; if(strstr(T.c_str(),S.c_str())) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
關於c_str()函數:blog
函數c_str()就是將C++的string轉化爲C的字符串數組,c_str()生成一個const char *指針,指向字符串的首地址。ci
char q[20]; 字符串
string S="1234";
strcpy(q,S.c_str());
這樣纔不會出錯,c_str()返回的是一個臨時指針,不能對其進行操做。
語法: const char *c_str();
c_str()函數返回一個指向正規C字符串的指針, 內容與本string串相同.,這是爲了與c語言兼容,在c語言中沒有string類型,故必須經過string類對象的成員函數c_str()把string 對象轉換成c中的字符串樣式。
注意:必定要使用strcpy()函數等來操做c_str()返回的指針。
(以上摘自百度知道)