【C/C++】關於strstr函數和c_str()函數

 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()返回的指針。

(以上摘自百度知道)

相關文章
相關標籤/搜索